Mercurial Hosting > luan
diff src/luan/modules/StringLuan.java @ 1777:e59349d53fec
optimize String.replace and regex.gsub
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 10 Aug 2023 16:24:20 -0600 |
parents | 7d2ab44f7a59 |
children | 1725fdb6c4f5 |
line wrap: on
line diff
--- a/src/luan/modules/StringLuan.java Fri Jul 28 11:53:03 2023 +0300 +++ b/src/luan/modules/StringLuan.java Thu Aug 10 16:24:20 2023 -0600 @@ -148,12 +148,32 @@ Utils.checkNotNull(s2,2); return s.endsWith(s2); } - +/* public static String replace(String s,String target,String replacement) throws LuanException { Utils.checkNotNull(s); Utils.checkNotNull(target,2); Utils.checkNotNull(replacement,3); return s.replace(target,replacement); } +*/ + public static String replace(String s,String target,String replacement) throws LuanException { + Utils.checkNotNull(s); + Utils.checkNotNull(target,2); + Utils.checkNotNull(replacement,3); + int i = s.indexOf(target); + if( i == -1 ) + return s; + int starting = 0; + int n = target.length(); + StringBuilder sb = new StringBuilder(); + do { + sb.append(s,starting,i); + sb.append(replacement); + starting = i + n; + i = s.indexOf(target,starting); + } while( i != -1 ); + sb.append(s,starting,s.length()); + return sb.toString(); + } }