Android - как заменить часть строки другой строкой?
У меня есть строки с некоторыми числами и английскими словами, и мне нужно перевести их на мой родной язык, найдя их и заменив их локализованной версией этого слова. Вы знаете, как легко достичь замены слов в строке?
Спасибо
Edit:
Я пробовал (часть строки "to" должна быть заменена на "xyz" ):
string.replace("to", "xyz")
Но он не работает...
Ответы
Ответ 1
Он работает, но он не изменит объект вызывающего, но возвращает новую строку.
Поэтому вам просто нужно назначить его новой переменной String или самому себе:
string = string.replace("to", "xyz");
или
String newString = string.replace("to", "xyz");
Документы API
public String replace (CharSequence target, CharSequence replacement)
Начиная с: API уровня 1
Копирует эту строку, заменяя вхождения указанной цели последовательность с другой последовательностью. строка обрабатывается с самого начала до конца.
Параметры
-
target
заменяемая последовательность.
-
replacement
замена
последовательность.
Возвращает результирующую строку.
Выбрасывает NullPointerException
, если цель или замена равно null.
Ответ 2
String str = "to";
str.replace("to", "xyz");
Просто попробуйте:)
Ответ 3
МОЖЕТ БЫТЬ ИНТЕРЕСНО ДЛЯ ВАС:
В java строковые объекты неизменяемы. Неизменяемый просто означает неизменяемость или неизменяемость.
После создания строкового объекта его данные или состояние не могут быть изменены, но создается новый строковый объект.
Ответ 4
Вы делаете только одну ошибку.
используйте replaceAll()
функцию там.
например.
String str = "Hi";
String str1 = "hello";
str.replaceAll( str, str1 );
Ответ 5
rekaszeru
Я заметил, что вы прокомментировали в 2011 году, но я думал, что должен опубликовать этот ответ в любом случае, если кто-то должен "заменить исходную строку" и наткнется на этот ответ.
Я использую EditText в качестве примера
//ДАЖИТЕ ЦЕЛЬ ТЕКСТОВОЙ КОРОБКИ ИМЯ
EditText textbox = (EditText) findViewById(R.id.your_textboxID);
//STRING TO REPLACE
String oldText = "hello"
String newText = "Hi";
String textBoxText = textbox.getText().toString();
//ЗАМЕНИТЕ СТРОКИ С ВОЗВРАЩЕННЫМИ СТРОКАМИ
String returnedString = textBoxText.replace( oldText, newText );
//ИСПОЛЬЗОВАТЬ ВОЗВРАЩАЕМЫЕ STRINGS ДЛЯ ЗАМЕНИТЬ НОВУЮ СТРОКУ ВНУТРИ ТЕКСТОВОГО ТЕКСТА
textbox.setText(returnedString);
Это не проверено, но это всего лишь пример использования возвращаемой строки для замены исходной строки макета с помощью setText()!
Очевидно, что для этого примера требуется, чтобы у вас был EditText с идентификатором, установленным для вашего_текстаксида