问题
StringTokenizer
?将String
转换为achar[]
并重复一遍?别的什么?
#1 热门回答(249 赞)
我使用for循环来迭代字符串并使用charAt()
来获取每个字符来检查它。由于String是使用数组实现的,因此charAt()
方法是一个常量时间操作。
String s = "...stuff...";
for (int i = 0; i < s.length(); i++){
char c = s.charAt(i);
//Process char
}
这就是我要做的。这对我来说似乎最简单。
就正确性而言,我不相信存在于此。这完全取决于你的个人风格。
#2 热门回答(159 赞)
两种选择
for(int i = 0, n = s.length() ; i < n ; i++) {
char c = s.charAt(i);
}
要么
for(char c : s.toCharArray()) {
// process c
}
第一个可能更快,然后第二个可能更可读。
#3 热门回答(79 赞)
注意如果你处理的是BMP之外的字符(UnicodeBasic Multilingual Plane),即在u0000-uFFFF范围之外的code points,那么这里描述的大多数其他技术都会被破坏。这种情况很少发生,因为此外的代码点主要分配给死语言。但是在这之外还有一些有用的字符,例如用于数学符号的一些代码点,还有一些用于用中文编码专有名称。
在这种情况下,你的代码将是:
String str = "....";
int offset = 0, strLen = str.length();
while (offset < strLen) {
int curChar = str.codePointAt(offset);
offset += Character.charCount(curChar);
// do something with curChar
}
TheCharacter.charCount(int)
方法需要Java 5。
来源:http://mindprod.com/jgloss/codepoint.html