在Java中删除字符串中的字符

在Java中删除字符串中的字符,java,string,Java,String,我有一个字符串,我需要从中删除某个字符,我已经能够做到这一点,但我仍然有一个问题。我去掉了字符,但字符串的长度保持不变 public class HelloWorld{ public static void main(String []args){ String data = "Hello World"; System.out.println(data); System.out.println("string length: " + data.l

我有一个字符串,我需要从中删除某个字符,我已经能够做到这一点,但我仍然有一个问题。我去掉了字符,但字符串的长度保持不变

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
为什么它似乎在计算不再在字符串中的字符数?

您没有删除字符,只是替换了它们

试试这个:

String letter = "l";
data = data.replace(letter, "");

替换
不正确:

Java不专门处理空字符。相反,请使用:

data = data.replace(String.valueOf(letter), "");
这是因为有两个重载,它们都不是
replace(char,CharSequence)
。因此,我们使用
replace(CharSequence,CharSequence)
重载(因为字符串是
CharSequence
s)

如果您同意将字母重新定义为字符串,您只需执行以下操作:

data = data.replace(letter, "");

字符串在java中是不可变的。。。谷歌it@Scorpion这不是问题所在,他正在正确地重新分配。你必须是一个C程序员。。。
data = data.replace(letter, "");