我在Java中读到,String是不可变的,所以我们不能直观地使用toLowerCase,即原始字符串是未修改的:
String s = "ABC";
s.toLowerCase();
> "ABC"
但即使使用StringBuffer(支持可变字符串)也不起作用
StringBuffer so = new StringBuffer("PoP");
so.toLowerCase()
> Static Error: No method in StringBuffer has name 'toLowerCase'
我感谢任何提示或建议。
嗯,它没有。您必须使用. toString().toLowerCase()
:
String lowercase = sb.toString().toLowerCase();
如果你想非常严格地不创建不必要的实例,你可以迭代所有字符,并小写:
for (int i = 0; i < sb.length(); i++) {
char c = sb.charAt(i);
sb.setCharAt(i, Character.toLowerCase(c));
}
最后-更喜欢StringBuilder
到StringBuffer
这个函数比使用“String lowercase=sb. toString().toLowerCase();”快20%左右:
public static StringBuilder StringBuilderLowerCase(StringBuilder pText) {
StringBuilder pTextLower = new StringBuilder(pText);
for (int idx = 0; idx < pText.length(); idx++) {
char c = pText.charAt(idx);
if (c >= 65 && c <= 65 + 27) {
pTextLower.setCharAt(idx, (char) ((int) (pText.charAt(idx)) | 32));
}
}
return pTextLower;
}