在Android應用程序中,我有一個實用程序類,用於解析2個regEx的字符串。我在一個靜態初始化器中編譯這兩個模式,以便它們只被編譯一次,然後活動可以靜態地使用解析方法。在Android應用程序中使用java.util.regex - 這有問題嗎?
這工作正常,除了第一次訪問和加載類,並且靜態初始值設定項編譯模式,UI編譯模式時掛起接近MINUTE!在第一次之後,它會在所有隨後對parseString()的調用中飛行。
我正在使用的regEx是相當大的 - 847個字符,但在正常的java webapp中這是閃電般的。我目前只在1.5 AVD的模擬器上進行測試。
難道這只是一個模擬器的問題,或者是有一些其他的原因,這種模式花了這麼長的時間來編譯?
private static final String exp1 = "(insertratherlong---847character--regexhere)";
private static Pattern regex1 = null;
private static final String newLineAndTagsExp = "[<>\\s]";
private static Pattern regexNewLineAndTags = null;
static {
regex1 = Pattern.compile(exp1, Pattern.CASE_INSENSITIVE);
regexNewLineAndTags = Pattern.compile(newLineAndTagsExp);
}
public static String parseString(CharSequence inputStr) {
String replacementStr = "replaceMentText";
String resultString = "none";
try {
Matcher regexMatcher = regex1.matcher(inputStr);
try {
resultString = regexMatcher.replaceAll(replacementStr);
} catch (IllegalArgumentException ex) {
} catch (IndexOutOfBoundsException ex) {
}
} catch (PatternSyntaxException ex) {
}
return resultString;
}
您的意思是java.util.regex.Pattern類在引擎蓋下使用ICU4C?如果是這樣,爲什麼\ U0002A700- \ U0002B73F(或類似的\ U表達式)不起作用? – 2011-08-25 10:22:35
是的,每個模式和匹配器都有一個由icu4c提供的本地對等體。如果您有特定的錯誤需要報告,請通過可重現的測試用例向錯誤跟蹤器報告。 – 2012-01-22 23:07:50