Замена символов в Java

#java #character-encoding #replace

#java #кодировка символов #заменить

Вопрос:

Я попытался заменить символы в строке, которая работает иногда и не работает большую часть времени.

Я попробовал следующее:

 String t = "[javatag]";
String t1 = t;
String t2 = t;
t.replace("u005B", "");
t.replace("u005D", "");
t1.replace("[", "");
t1.replace("]", "");
t2.replace("\]", "");
t2.replace("\[", "");
System.out.println(t " , " t1 " , " t2);
  

Результирующий вывод по-прежнему является « [javatag] , [javatag] , [javatag] » без замены «[» и «]».

Что я должен сделать, чтобы заменить эти символы «[» и «]»?

Ответ №1:

String объекты в java неизменяемы. Вы не можете их изменить.

Вам нужно:

 t2 = t2.replace("\]", "");
  

replace() возвращает новый String объект.

Редактировать: Потому что … Я отрываюсь от пакета

И поскольку это так, аргумент на самом деле является регулярным выражением, и вы хотите избавиться от обеих скобок, вы можете использовать replaceAll() вместо двух операций:

 t2 = t2.replaceAll("[\[\]]", "");
  

Это позволило бы избавиться от открывающих и закрывающих скобок одним махом.

Ответ №2:

Строки неизменяемы, поэтому

 t.replace(....);
  

ничего не делает

вам нужно присвоить выходные данные некоторой переменной, например

 t = t.replace(....);
  

Комментарии:

1. 1 Ты дал ему t , я дал t1 и Брайану t2 . Я думаю, у него все готово 🙂

2. забавно, все в течение 4 секунд друг от друга тоже

3. Я не могу решить, смешно ли это… или грустно. 😀

4. Я вижу ваш replace() и я поднимаю вам replaceAll()

5. Элу Гору тоже не стало лучше.

Ответ №3:

String символы в Java неизменяемы, что означает, что вы не можете их изменить. Вместо этого выполните t1 = t1.replace("]", ""); . Это приведет к присвоению результата replace t1.

Ответ №4:

String.replace таким образом не работает. Вы должны использовать что-то вроде t = t.replace("t", "")

Ответ №5:

String.replace() возвращает новую строку после замены требуемых символов. Следовательно, вам нужно сделать это таким образом:

 String t = "[javatag]";
t = t.replace("[","");
t = t.replace("]","");
  

Комментарии:

1. Я понимаю. Я просто забыл экранировать специальные символы. Спасибо.

2. Ну, я только что проверил код и обнаружил, что он работает без экранирования строки.

3. На самом деле — вы правы, потому что я думаю, что это вызывает replace(char, char) . Я забыл, что была такая перегрузка.

Ответ №6:

 t.replace(....);
  

выдает строку (возвращает строку)

вы можете переназначить имя исходной переменной на новую строку

и старая строка позже будет собрана из мусора 🙂