java - 为什么使用 StringBuffer 后无法使用 toLowerCase() ?

标签 java string

我读到,在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

关于java - 为什么使用 StringBuffer 后无法使用 toLowerCase() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096170/

相关文章:

javascript - 在 Javascript 或 jQuery 中,如何检测字符串开头的空格?

java - 解析 JSON 对象时出现 NullPointerException

java - 如何访问 Pax Exam 测试探针包中的资源?

java - POI 在从 excel 读取数字数据时追加 .0

java - 使用java插入列表<text> cassandra

java - Java:正则表达式不匹配

c++ - 无法理解带有特殊字符的 C++ 字符串的输出

string - [Char] 和 [Word8] 之间转换的最佳方式?

string - 在 Swift 中改组字符串 - 不支持交换位置

java - 为什么这段代码会 toast ?没有听众