annotate src/luan/modules/StringLuan.java @ 1717:c637a2a1023d

add String.replace
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 25 Jul 2022 11:16:53 -0600
parents b82767112d8e
children 5603ee8e2a71
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
167
4c0131c2b650 merge luan/lib into modules
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 163
diff changeset
1 package luan.modules;
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
2
1649
f7e2df85fc0a add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
3 import java.security.NoSuchAlgorithmException;
757
Franklin Schmidt <fschmidt@gmail.com>
parents: 702
diff changeset
4 import java.util.Arrays;
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
5 import java.util.regex.Pattern;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
6 import java.util.regex.Matcher;
48
64ecb7a3aad7 rename Lua to Luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 46
diff changeset
7 import luan.Luan;
64ecb7a3aad7 rename Lua to Luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 46
diff changeset
8 import luan.LuanTable;
64ecb7a3aad7 rename Lua to Luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 46
diff changeset
9 import luan.LuanFunction;
64ecb7a3aad7 rename Lua to Luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 46
diff changeset
10 import luan.LuanException;
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
11
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
12
168
ebe9db183eb7 rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 167
diff changeset
13 public final class StringLuan {
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
14
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
15 static int start(String s,int i) {
248
10cc873babee fix StringIndexOutOfBoundsException
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 246
diff changeset
16 int len = s.length();
10cc873babee fix StringIndexOutOfBoundsException
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 246
diff changeset
17 return i==0 ? 0 : i > 0 ? Math.min(i-1,len) : Math.max(len+i,0);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
18 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
19
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
20 static int start(String s,Integer i,int dflt) {
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
21 return i==null ? dflt : start(s,i);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
22 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
23
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
24 static int end(String s,int i) {
248
10cc873babee fix StringIndexOutOfBoundsException
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 246
diff changeset
25 int len = s.length();
10cc873babee fix StringIndexOutOfBoundsException
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 246
diff changeset
26 return i==0 ? 0 : i > 0 ? Math.min(i,len) : Math.max(len+i+1,0);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
27 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
28
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
29 static int end(String s,Integer i,int dflt) {
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
30 return i==null ? dflt : end(s,i);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
31 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
32
1335
e0cf0d108a77 major cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1334
diff changeset
33 public static Integer[] unicode(String s,Integer i,Integer j) throws LuanException {
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
34 Utils.checkNotNull(s);
1505
01e38174d580 minor fix
Franklin Schmidt <fschmidt@gmail.com>
parents: 1384
diff changeset
35 int start = start(s,i,0);
305
5e7450ac27f2 rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
36 int end = end(s,j,start+1);
5e7450ac27f2 rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
37 Integer[] chars = new Integer[end-start];
5e7450ac27f2 rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
38 for( int k=0; k<chars.length; k++ ) {
5e7450ac27f2 rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
39 chars[k] = (int)s.charAt(start+k);
113
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
40 }
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
41 return chars;
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
42 }
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
43
246
58752e3e4c5c rename String.from_integers to char;
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 221
diff changeset
44 public static String char_(int... chars) {
113
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
45 char[] a = new char[chars.length];
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
46 for( int i=0; i<chars.length; i++ ) {
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
47 a[i] = (char)chars[i];
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
48 }
8c706d6eb5dc add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
49 return new String(a);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
50 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
51
1335
e0cf0d108a77 major cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1334
diff changeset
52 public static byte[] to_binary(String s) {
360
cbb94a7c7a9e allow mail attachments;
Franklin Schmidt <fschmidt@gmail.com>
parents: 305
diff changeset
53 return s.getBytes();
cbb94a7c7a9e allow mail attachments;
Franklin Schmidt <fschmidt@gmail.com>
parents: 305
diff changeset
54 }
cbb94a7c7a9e allow mail attachments;
Franklin Schmidt <fschmidt@gmail.com>
parents: 305
diff changeset
55
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
56 public static String lower(String s) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
57 Utils.checkNotNull(s);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
58 return s.toLowerCase();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
59 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
60
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
61 public static String upper(String s) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
62 Utils.checkNotNull(s);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
63 return s.toUpperCase();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
64 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
65
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
66 public static String trim(String s) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
67 Utils.checkNotNull(s);
271
82a3ebcfbafa add internal tests
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 264
diff changeset
68 return s.trim();
82a3ebcfbafa add internal tests
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 264
diff changeset
69 }
82a3ebcfbafa add internal tests
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 264
diff changeset
70
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
71 public static String reverse(String s) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
72 Utils.checkNotNull(s);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
73 return new StringBuilder(s).reverse().toString();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
74 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
75
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
76 public static String rep(String s,int n,String sep) {
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
77 if( n < 1 )
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
78 return "";
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
79 StringBuilder buf = new StringBuilder(s);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
80 while( --n > 0 ) {
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
81 if( sep != null )
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
82 buf.append(sep);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
83 buf.append(s);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
84 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
85 return buf.toString();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
86 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
87
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
88 public static String sub(String s,int i,Integer j) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
89 Utils.checkNotNull(s);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
90 int start = start(s,i);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
91 int end = end(s,j,s.length());
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
92 return s.substring(start,end);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
93 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
94
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
95 public static Object[] find(String s,String pattern,Integer init,Boolean plain) {
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
96 int start = start(s,init,0);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
97 if( Boolean.TRUE.equals(plain) ) {
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
98 int i = s.indexOf(pattern,start);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
99 return i == -1 ? null : new Integer[]{i+1,i+pattern.length()};
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
100 }
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
101 Matcher m = Pattern.compile(pattern).matcher(s);
555
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
102 if( !m.find(start) )
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
103 return null;
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
104 int n = m.groupCount();
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
105 Object[] rtn = new Object[2+n];
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
106 rtn[0] = m.start() + 1;
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
107 rtn[1] = m.end();
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
108 for( int i=0; i<n; i++ ) {
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
109 rtn[2+i] = m.group(i+1);
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
110 }
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
111 return rtn;
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
112 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
113
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
114 public static String[] match(String s,String pattern,Integer init) {
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
115 int start = start(s,init,0);
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
116 Matcher m = Pattern.compile(pattern).matcher(s);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
117 if( !m.find(start) )
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
118 return null;
555
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
119 int n = m.groupCount();
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
120 if( n == 0 )
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
121 return new String[]{m.group()};
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
122 String[] rtn = new String[n];
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
123 for( int i=0; i<n; i++ ) {
161
d310ebf4d6e7 add javaSearcher
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 156
diff changeset
124 rtn[i] = m.group(i+1);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
125 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
126 return rtn;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
127 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
128
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
129 public static LuanFunction gmatch(String s,String pattern) throws LuanException {
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
130 Utils.checkNotNull(s);
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
131 Utils.checkNotNull(pattern,2);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
132 final Matcher m = Pattern.compile(pattern).matcher(s);
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
133 return new LuanFunction() {
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
134 @Override public Object call(Luan luan,Object[] args) {
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
135 if( !m.find() )
112
f5af13062b10 fix previous rev
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 108
diff changeset
136 return null;
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
137 final int n = m.groupCount();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
138 if( n == 0 )
112
f5af13062b10 fix previous rev
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 108
diff changeset
139 return m.group();
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
140 String[] rtn = new String[n];
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
141 for( int i=0; i<n; i++ ) {
138
06159094b802 replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 135
diff changeset
142 rtn[i] = m.group(i+1);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
143 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
144 return rtn;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
145 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
146 };
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
147 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
148
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
149 public static Object[] gsub(Luan luan,String s,String pattern,Object repl,Integer n) throws LuanException {
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
150 Utils.checkNotNull(s);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
151 int max = n==null ? Integer.MAX_VALUE : n;
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
152 final Matcher m = Pattern.compile(pattern).matcher(s);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
153 if( repl instanceof String ) {
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
154 String replacement = (String)repl;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
155 int i = 0;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
156 StringBuffer sb = new StringBuffer();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
157 while( i<max && m.find() ) {
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
158 m.appendReplacement(sb,replacement);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
159 i++;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
160 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
161 m.appendTail(sb);
46
a443637829c1 remove LuaNumber
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 44
diff changeset
162 return new Object[]{ sb.toString(), i };
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
163 }
48
64ecb7a3aad7 rename Lua to Luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 46
diff changeset
164 if( repl instanceof LuanTable ) {
64ecb7a3aad7 rename Lua to Luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 46
diff changeset
165 LuanTable t = (LuanTable)repl;
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
166 int i = 0;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
167 StringBuffer sb = new StringBuffer();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
168 while( i<max && m.find() ) {
87
eaf37cfa30c2 fix string.gsub()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 86
diff changeset
169 String match = m.groupCount()==0 ? m.group() : m.group(1);
1562
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1555
diff changeset
170 Object val = t.get(luan,match);
443
bf5e62a9090c remove toBoolean() and to_boolean()
Franklin Schmidt <fschmidt@gmail.com>
parents: 440
diff changeset
171 if( val != null ) {
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
172 String replacement = luan.luanToString(val);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
173 m.appendReplacement(sb,replacement);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
174 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
175 i++;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
176 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
177 m.appendTail(sb);
46
a443637829c1 remove LuaNumber
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 44
diff changeset
178 return new Object[]{ sb.toString(), i };
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
179 }
48
64ecb7a3aad7 rename Lua to Luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 46
diff changeset
180 if( repl instanceof LuanFunction ) {
64ecb7a3aad7 rename Lua to Luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 46
diff changeset
181 LuanFunction fn = (LuanFunction)repl;
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
182 int i = 0;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
183 StringBuffer sb = new StringBuffer();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
184 while( i<max && m.find() ) {
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
185 Object[] args;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
186 final int count = m.groupCount();
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
187 if( count == 0 ) {
555
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
188 args = new String[]{m.group()};
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
189 } else {
555
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
190 args = new String[count];
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
191 for( int j=0; j<count; j++ ) {
555
e25ba7a2e816 some String documentation and fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 548
diff changeset
192 args[j] = m.group(j+1);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
193 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
194 }
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
195 Object val = Luan.first( fn.call(luan,args) );
443
bf5e62a9090c remove toBoolean() and to_boolean()
Franklin Schmidt <fschmidt@gmail.com>
parents: 440
diff changeset
196 if( val != null ) {
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
197 String replacement = luan.luanToString(val);
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
198 m.appendReplacement(sb,replacement);
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
199 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
200 i++;
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
201 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
202 m.appendTail(sb);
46
a443637829c1 remove LuaNumber
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 44
diff changeset
203 return new Object[]{ sb.toString(), i };
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
204 }
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
205 throw new LuanException( "bad argument #3 to 'gsub' (string/function/table expected)" );
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
206 }
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
207
79
805929c3c6e1 add string.format
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 77
diff changeset
208 // note - String.format() is too stupid to convert between ints and floats.
805929c3c6e1 add string.format
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 77
diff changeset
209 public static String format(String format,Object... args) {
805929c3c6e1 add string.format
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 77
diff changeset
210 return String.format(format,args);
805929c3c6e1 add string.format
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 77
diff changeset
211 }
805929c3c6e1 add string.format
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 77
diff changeset
212
420
e9d4d5854e54 add String.encode
Franklin Schmidt <fschmidt@gmail.com>
parents: 409
diff changeset
213 public static String encode(String s) {
e9d4d5854e54 add String.encode
Franklin Schmidt <fschmidt@gmail.com>
parents: 409
diff changeset
214 return Luan.stringEncode(s);
e9d4d5854e54 add String.encode
Franklin Schmidt <fschmidt@gmail.com>
parents: 409
diff changeset
215 }
e9d4d5854e54 add String.encode
Franklin Schmidt <fschmidt@gmail.com>
parents: 409
diff changeset
216
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
217 public static Number to_number(String s,Integer base) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 645
diff changeset
218 Utils.checkNotNull(s);
448
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
219 try {
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
220 if( base == null ) {
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
221 return Double.valueOf(s);
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
222 } else {
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
223 return Long.valueOf(s,base);
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
224 }
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
225 } catch(NumberFormatException e) {}
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
226 return null;
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
227 }
8b2db645b9b2 move Luan.to_number to String
Franklin Schmidt <fschmidt@gmail.com>
parents: 443
diff changeset
228
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
229 public static boolean matches(String s,String pattern) throws LuanException {
702
87970832a3c3 improve Http_test
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
230 Utils.checkNotNull(s);
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
231 return Pattern.compile(pattern).matcher(s).find();
456
ceb3fd33adf1 add String.matches
Franklin Schmidt <fschmidt@gmail.com>
parents: 455
diff changeset
232 }
ceb3fd33adf1 add String.matches
Franklin Schmidt <fschmidt@gmail.com>
parents: 455
diff changeset
233
1335
e0cf0d108a77 major cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1334
diff changeset
234 public static String[] split(String s,String pattern,Integer limit) throws LuanException {
757
Franklin Schmidt <fschmidt@gmail.com>
parents: 702
diff changeset
235 Utils.checkNotNull(s);
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
236 Utils.checkNotNull(pattern,2);
1195
9a57f0b16c2b better String.split
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
237 int n = limit==null ? -1 : limit;
9a57f0b16c2b better String.split
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
238 return s.split(pattern,n);
757
Franklin Schmidt <fschmidt@gmail.com>
parents: 702
diff changeset
239 }
Franklin Schmidt <fschmidt@gmail.com>
parents: 702
diff changeset
240
1649
f7e2df85fc0a add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
241 public static String digest_message(String algorithm,String input) throws LuanException, NoSuchAlgorithmException {
f7e2df85fc0a add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
242 Utils.checkNotNull(algorithm,1);
f7e2df85fc0a add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
243 Utils.checkNotNull(input,2);
f7e2df85fc0a add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
244 return BinaryLuan.to_hex( BinaryLuan.digest_message( algorithm, input.getBytes() ) );
f7e2df85fc0a add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
245 }
f7e2df85fc0a add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
246
1716
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
247 public static boolean contains(String s,String s2) throws LuanException {
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
248 Utils.checkNotNull(s);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
249 Utils.checkNotNull(s2,2);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
250 return s.contains(s2);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
251 }
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
252
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
253 public static boolean starts_with(String s,String s2) throws LuanException {
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
254 Utils.checkNotNull(s);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
255 Utils.checkNotNull(s2,2);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
256 return s.startsWith(s2);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
257 }
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
258
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
259 public static boolean ends_with(String s,String s2) throws LuanException {
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
260 Utils.checkNotNull(s);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
261 Utils.checkNotNull(s2,2);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
262 return s.endsWith(s2);
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
263 }
b82767112d8e add String.regex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1715
diff changeset
264
1717
c637a2a1023d add String.replace
Franklin Schmidt <fschmidt@gmail.com>
parents: 1716
diff changeset
265 public static String replace(String s,String target,String replacement) throws LuanException {
c637a2a1023d add String.replace
Franklin Schmidt <fschmidt@gmail.com>
parents: 1716
diff changeset
266 Utils.checkNotNull(s);
c637a2a1023d add String.replace
Franklin Schmidt <fschmidt@gmail.com>
parents: 1716
diff changeset
267 Utils.checkNotNull(target,2);
c637a2a1023d add String.replace
Franklin Schmidt <fschmidt@gmail.com>
parents: 1716
diff changeset
268 Utils.checkNotNull(replacement,3);
c637a2a1023d add String.replace
Franklin Schmidt <fschmidt@gmail.com>
parents: 1716
diff changeset
269 return s.replace(target,replacement);
c637a2a1023d add String.replace
Franklin Schmidt <fschmidt@gmail.com>
parents: 1716
diff changeset
270 }
c637a2a1023d add String.replace
Franklin Schmidt <fschmidt@gmail.com>
parents: 1716
diff changeset
271
43
80b67b1a653c implement string lib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
272 }