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

use*_*615 0 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.length());
       char letter = 'l';
       data = data.replace(letter, '\0');
       System.out.println(data);
       System.out.println("string length: " + data.length());
    }
 }
Run Code Online (Sandbox Code Playgroud)

这给了我输出:

Hello World

string length: 11

Heo Word

string length: 11
Run Code Online (Sandbox Code Playgroud)

我需要它是:

Hello World

string length: 11

Heo Word

string length: 8
Run Code Online (Sandbox Code Playgroud)

为什么它似乎在计算字符串中不再存在的字符?

ζ--*_*ζ-- 5

这个replace不对:

data = data.replace(letter, '\0');
Run Code Online (Sandbox Code Playgroud)

Java 并不特别对待空字符。相反,使用:

data = data.replace(String.valueOf(letter), "");
Run Code Online (Sandbox Code Playgroud)

这是因为有两个重载,但都不是replace(char, CharSequence). 因此我们使用replace(CharSequence, CharSequence)重载(因为字符串是CharSequences)

如果您同意重新定义letter为字符串,您可以简单地执行以下操作:

data = data.replace(letter, "");
Run Code Online (Sandbox Code Playgroud)