Mercurial Hosting > luan
changeset 1721:5c69d2e8bd75
no regex in String.find and String.split
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 26 Jul 2022 12:44:52 -0600 |
parents | 2f4c99c02436 |
children | 7d2ab44f7a59 |
files | src/luan/modules/StringLuan.java website/src/manual.html.luan |
diffstat | 2 files changed, 12 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/src/luan/modules/StringLuan.java Mon Jul 25 17:31:50 2022 -0600 +++ b/src/luan/modules/StringLuan.java Tue Jul 26 12:44:52 2022 -0600 @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.regex.Pattern; import java.util.regex.Matcher; +import goodjava.util.GoodUtils; import luan.Luan; import luan.LuanTable; import luan.LuanFunction; @@ -92,23 +93,10 @@ return s.substring(start,end); } - public static Object[] find(String s,String pattern,Integer init,Boolean plain) { + public static Object[] find(String s,String s2,Integer init) { int start = start(s,init,0); - if( Boolean.TRUE.equals(plain) ) { - int i = s.indexOf(pattern,start); - return i == -1 ? null : new Integer[]{i+1,i+pattern.length()}; - } - Matcher m = Pattern.compile(pattern).matcher(s); - if( !m.find(start) ) - return null; - int n = m.groupCount(); - Object[] rtn = new Object[2+n]; - rtn[0] = m.start() + 1; - rtn[1] = m.end(); - for( int i=0; i<n; i++ ) { - rtn[2+i] = m.group(i+1); - } - return rtn; + int i = s.indexOf(s2,start); + return i == -1 ? null : new Integer[]{i+1,i+s2.length()}; } public static String[] match(String s,String pattern,Integer init) { @@ -231,11 +219,11 @@ return Pattern.compile(pattern).matcher(s).find(); } - public static String[] split(String s,String pattern,Integer limit) throws LuanException { + public static String[] split(String s,String s2,Integer limit) throws LuanException { Utils.checkNotNull(s); - Utils.checkNotNull(pattern,2); + Utils.checkNotNull(s2,2); int n = limit==null ? -1 : limit; - return s.split(pattern,n); + return GoodUtils.split(s,s2,n); } public static String digest_message(String algorithm,String input) throws LuanException, NoSuchAlgorithmException {
--- a/website/src/manual.html.luan Mon Jul 25 17:31:50 2022 -0600 +++ b/website/src/manual.html.luan Tue Jul 26 12:44:52 2022 -0600 @@ -2446,23 +2446,18 @@ end } ["String.find"] = { - title = "<code>String.find (s, pattern [, init [, plain]])</code>" + title = "<code>String.find (s, s2 [, init])</code>" content = function() %> <p> -Looks for the first match of -<code>pattern</code> (see <a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html">Pattern</a>) in the string <code>s</code>. +Looks for the first substring +<code>s2</code> in the string <code>s</code>. If it finds a match, then <code>find</code> returns the indices of <code>s</code> where this occurrence starts and ends; otherwise, it returns <b>nil</b>. A third, optional numerical argument <code>init</code> specifies where to start the search; its default value is 1 and can be negative. -A value of <b>true</b> as a fourth, optional argument <code>plain</code> -turns off the pattern matching facilities, -so the function does a plain "find substring" operation, -with no characters in <code>pattern</code> being considered magic. -Note that if <code>plain</code> is given, then <code>init</code> must be given as well. </p> <p> @@ -2709,11 +2704,11 @@ end } ["String.split"] = { - title = "<code>String.split (s, pattern [, limit])</code>" + title = "<code>String.split (s, s2 [, limit])</code>" content = function() %> <p> -Splits <code>s</code> using regex <code>pattern</code> and returns the results. If <code>limit</code> is positive, then only returns at most that many results. If <code>limit</code> is zero, then remove trailing empty results. +Splits <code>s</code> using substring <code>s2</code> and returns the results. If <code>limit</code> is positive, then only returns at most that many results. If <code>limit</code> is zero, then remove trailing empty results. </p> <% end