![](/img/trans.png)
[英]Why I can't print the content of this StringBuffer object after that I have append into it the lines of a readed file?
[英]How come I can't use toLowerCase() after using a StringBuffer?
我在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
這個 function 比使用“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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.