6792400: Avoid loading of Normalizer resources for simple uses
Reviewed-by: okutsu
This commit is contained in:
parent
b6b6594d50
commit
bbd33e6ddc
@ -1598,15 +1598,34 @@ public final class NormalizerBase implements Cloneable {
|
|||||||
* @param options the optional features to be enabled.
|
* @param options the optional features to be enabled.
|
||||||
*/
|
*/
|
||||||
public static String normalize(String str, Normalizer.Form form, int options) {
|
public static String normalize(String str, Normalizer.Form form, int options) {
|
||||||
|
int len = str.length();
|
||||||
|
boolean asciiOnly = true;
|
||||||
|
if (len < 80) {
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
if (str.charAt(i) > 127) {
|
||||||
|
asciiOnly = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
char[] a = str.toCharArray();
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
if (a[i] > 127) {
|
||||||
|
asciiOnly = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (form) {
|
switch (form) {
|
||||||
case NFC :
|
case NFC :
|
||||||
return NFC.normalize(str, options);
|
return asciiOnly ? str : NFC.normalize(str, options);
|
||||||
case NFD :
|
case NFD :
|
||||||
return NFD.normalize(str, options);
|
return asciiOnly ? str : NFD.normalize(str, options);
|
||||||
case NFKC :
|
case NFKC :
|
||||||
return NFKC.normalize(str, options);
|
return asciiOnly ? str : NFKC.normalize(str, options);
|
||||||
case NFKD :
|
case NFKD :
|
||||||
return NFKD.normalize(str, options);
|
return asciiOnly ? str : NFKD.normalize(str, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new IllegalArgumentException("Unexpected normalization form: " +
|
throw new IllegalArgumentException("Unexpected normalization form: " +
|
||||||
|
Loading…
x
Reference in New Issue
Block a user