我有一个程序通过删除任何不是字母或数字的字符来过滤掉字符串.该计划支持大量语言,包括中文,俄语,阿拉伯语等.该计划如下:
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < src.length(); i++) {
int ch = src.codePointAt(i);
if (Character.isLetterOrDigit(ch)) {
strBuilder.appendCodePoint(ch);
}
}
Run Code Online (Sandbox Code Playgroud)
我使用codePointAt
方法来支持通过高和低代理以UTF 32位表示的字符.在执行过滤之前,我需要知道每个字符串是否需要规范化?我指的是Normalizer.normalize
在执行循环之前调用该方法.如果是,Normalizer.Form
我应该使用哪个?
谢谢.
请注意,您用于迭代代码点的代码不太正确,我相信您想要:
for(int cp, i = 0; i < s.length(); i += Character.charCount(cp)) {
cp = s.codePointAt(i);
// Process cp...
}
Run Code Online (Sandbox Code Playgroud)
抱歉,但不知道您是否需要正常化。
归档时间: |
|
查看次数: |
400 次 |
最近记录: |