Use String.replace on non-regex string queries In some occasions, String.replaceAll is used over String.replace for simple String replacements. This will lead to a regex matcher being created and will lead to unnecessary memory performance impact. Test: atest CtsIcu4cTestCases CtsIcuTestCases CtsLibcoreTestCases CtsLibcoreOjTestCases CtsBionicTestCases CtsTextTestCases minikin_tests -- --abi x86_64 Bug: 402755031 Change-Id: Ib89ca08fb1f23e6acbab04c761937d1058c2d5ad
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/InternalLocaleBuilder.java b/android_icu4j/src/main/java/android/icu/impl/locale/InternalLocaleBuilder.java index 66c86e3..52e7787 100644 --- a/android_icu4j/src/main/java/android/icu/impl/locale/InternalLocaleBuilder.java +++ b/android_icu4j/src/main/java/android/icu/impl/locale/InternalLocaleBuilder.java
@@ -79,7 +79,7 @@ _variant = ""; } else { // normalize separators to "_" - String var = variant.replaceAll(LanguageTag.SEP, BaseLocale.SEP); + String var = variant.replace(LanguageTag.SEP, BaseLocale.SEP); int errIdx = checkVariants(var, BaseLocale.SEP); if (errIdx != -1) { throw new LocaleSyntaxException("Ill-formed variant: " + variant, errIdx); @@ -125,7 +125,7 @@ } else { if (type.length() != 0) { // normalize separator to "-" - String tp = type.replaceAll(BaseLocale.SEP, LanguageTag.SEP); + String tp = type.replace(BaseLocale.SEP, LanguageTag.SEP); // validate StringTokenIterator itr = new StringTokenIterator(tp, LanguageTag.SEP); while (!itr.isDone()) { @@ -170,7 +170,7 @@ } } else { // validate value - String val = value.replaceAll(BaseLocale.SEP, LanguageTag.SEP); + String val = value.replace(BaseLocale.SEP, LanguageTag.SEP); StringTokenIterator itr = new StringTokenIterator(val, LanguageTag.SEP); while (!itr.isDone()) { String s = itr.current(); @@ -206,7 +206,7 @@ clearExtensions(); return this; } - subtags = subtags.replaceAll(BaseLocale.SEP, LanguageTag.SEP); + subtags = subtags.replace(BaseLocale.SEP, LanguageTag.SEP); StringTokenIterator itr = new StringTokenIterator(subtags, LanguageTag.SEP); List<String> extensions = null; @@ -489,7 +489,7 @@ if (sb.length() != 0) { sb.append(BaseLocale.SEP); } - sb.append(privuse.substring(privVarStart).replaceAll(LanguageTag.SEP, BaseLocale.SEP)); + sb.append(privuse.substring(privVarStart).replace(LanguageTag.SEP, BaseLocale.SEP)); variant = sb.toString(); } }
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java b/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java index bc179c6..3c3aa16 100644 --- a/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java +++ b/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java
@@ -186,7 +186,7 @@ String keyString = key.toString(); - String valueString = value.toString().replaceAll(" ", ""); + String valueString = value.toString().replace(" ", ""); if ("target".equals(keyString)) { target = valueString; } else if ("factor".equals(keyString)) {
diff --git a/android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java b/android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java index f801746..5b23f5f 100644 --- a/android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java +++ b/android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java
@@ -2319,7 +2319,7 @@ } } if (calType == null) { - calType = className.replaceAll("Calendar", "").toLowerCase(Locale.ENGLISH); + calType = className.replace("Calendar", "").toLowerCase(Locale.ENGLISH); } initializeData(locale, calType);
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/InternalLocaleBuilder.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/InternalLocaleBuilder.java index a126d2a..55d132d 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/InternalLocaleBuilder.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/InternalLocaleBuilder.java
@@ -75,7 +75,7 @@ _variant = ""; } else { // normalize separators to "_" - String var = variant.replaceAll(LanguageTag.SEP, BaseLocale.SEP); + String var = variant.replace(LanguageTag.SEP, BaseLocale.SEP); int errIdx = checkVariants(var, BaseLocale.SEP); if (errIdx != -1) { throw new LocaleSyntaxException("Ill-formed variant: " + variant, errIdx); @@ -121,7 +121,7 @@ } else { if (type.length() != 0) { // normalize separator to "-" - String tp = type.replaceAll(BaseLocale.SEP, LanguageTag.SEP); + String tp = type.replace(BaseLocale.SEP, LanguageTag.SEP); // validate StringTokenIterator itr = new StringTokenIterator(tp, LanguageTag.SEP); while (!itr.isDone()) { @@ -166,7 +166,7 @@ } } else { // validate value - String val = value.replaceAll(BaseLocale.SEP, LanguageTag.SEP); + String val = value.replace(BaseLocale.SEP, LanguageTag.SEP); StringTokenIterator itr = new StringTokenIterator(val, LanguageTag.SEP); while (!itr.isDone()) { String s = itr.current(); @@ -202,7 +202,7 @@ clearExtensions(); return this; } - subtags = subtags.replaceAll(BaseLocale.SEP, LanguageTag.SEP); + subtags = subtags.replace(BaseLocale.SEP, LanguageTag.SEP); StringTokenIterator itr = new StringTokenIterator(subtags, LanguageTag.SEP); List<String> extensions = null; @@ -485,7 +485,7 @@ if (sb.length() != 0) { sb.append(BaseLocale.SEP); } - sb.append(privuse.substring(privVarStart).replaceAll(LanguageTag.SEP, BaseLocale.SEP)); + sb.append(privuse.substring(privVarStart).replace(LanguageTag.SEP, BaseLocale.SEP)); variant = sb.toString(); } }
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java index 3aa643d..612891a 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/units/ConversionRates.java
@@ -179,7 +179,7 @@ String keyString = key.toString(); - String valueString = value.toString().replaceAll(" ", ""); + String valueString = value.toString().replace(" ", ""); if ("target".equals(keyString)) { target = valueString; } else if ("factor".equals(keyString)) {
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/text/DateFormatSymbols.java b/icu4j/main/core/src/main/java/com/ibm/icu/text/DateFormatSymbols.java index 78fcc76..959b8d0 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/text/DateFormatSymbols.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/text/DateFormatSymbols.java
@@ -2364,7 +2364,7 @@ } } if (calType == null) { - calType = className.replaceAll("Calendar", "").toLowerCase(Locale.ENGLISH); + calType = className.replace("Calendar", "").toLowerCase(Locale.ENGLISH); } initializeData(locale, calType);