У меня есть строка, и мне нужно удалить из нее определенный символ, и я смог это сделать, но у меня все еще есть проблема. Я избавляюсь от символа, но длина строки остается прежней.

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
user2943615 18 Апр 2014 в 05:14

2 ответа

Лучший ответ

Это 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, "");
4
nanofarad 18 Апр 2014 в 01:21

Вы не удалили символы, а просто заменили их.

Попробуй это:

String letter = "l";
data = data.replace(letter, "");
3
songyuanyao 18 Апр 2014 в 01:20