我有一个字符串,我需要从中删除某个字符,我已经能够做到这一点,但我仍然有问题。我摆脱了char,但字符串的长度保持不变。
public class HelloWorld{
public static void main(String []args){
String data = "Hello World";
System.out.println(data);
System.out.println("string length: " + data.length());
char letter = 'l';
data = data.replace(letter, '\0');
System.out.println(data);
System.out.println("string length: " + data.length());
}
}
这给了我输出:
Hello World
string length: 11
Heo Word
string length: 11
我需要它:
Hello World
string length: 11
Heo Word
string length: 8
为什么它似乎计算不再在字符串中的字符?
答案 0 :(得分:4)
此replace
不正确:
data = data.replace(letter, '\0');
Java不会特别处理空字符。相反,使用:
data = data.replace(String.valueOf(letter), "");
这是因为有两个重载,都不是replace(char, CharSequence)
。因此,我们使用replace(CharSequence, CharSequence)
重载(因为字符串是CharSequence
s)
如果您可以将letter
重新定义为String,则可以执行以下操作:
data = data.replace(letter, "");
答案 1 :(得分:3)
你没有删除字符,只是替换它们。
试试这个:
String letter = "l";
data = data.replace(letter, "");