Android - как заменить часть строки другой строкой? - PullRequest
61 голосов
/ 22 апреля 2011

У меня есть строки с некоторыми цифрами и английскими словами, и мне нужно перевести их на мой родной язык, найдя их и заменив их локализованной версией этого слова. Вы знаете, как легко добиться замены слов в строке?

Спасибо

Edit:

Я пытался (часть строки "to" должна быть заменена на "xyz"):

string.replace("to", "xyz")

Но это не работает ...

Ответы [ 5 ]

177 голосов
/ 22 апреля 2011

Работает, но не изменяет объект вызывающего, но возвращает новую строку.Поэтому вам просто нужно присвоить его новой строковой переменной или себе:

string = string.replace("to", "xyz");

или

String newString = string.replace("to", "xyz");

Документы API

public String replace (CharSequence target, CharSequence replacement) 

С: Уровень API 1

Копирует эту строку, заменяя вхождения указанной целевой последовательности другой последовательностью.Строка обрабатывается от начала до конца.

Параметры

  • target последовательность замены.
  • replacement последовательность замены.

Возвращает полученную строку. Бросает NullPointerException, если цель или замена - ноль.

2 голосов
/ 23 ноября 2016

МОЖЕТ БЫТЬ ИНТЕРЕСНЫ ВАМ:

В Java строковые объекты неизменны. «Неизменяемый» означает просто неизменяемый или неизменяемый.

После создания строкового объекта его данные или состояние не могут быть изменены, но создается новый строковый объект.

1 голос
/ 26 сентября 2016
String str = "to";
str.replace("to", "xyz");

Просто попробуйте :) 1002 *

0 голосов
/ 03 декабря 2016

рекассеру

Я заметил, что вы прокомментировали в 2011 году, но я решил, что в любом случае я должен опубликовать этот ответ на тот случай, если кому-то понадобится «заменить исходную строку» и натолкнется на этот ответ.

Я использую EditText в качестве примера


// ДАТЬ ЦЕЛЕВОЙ ЯЩИК ТЕКСТА ИМЯ

 EditText textbox = (EditText) findViewById(R.id.your_textboxID);

// СТРОКА ЗАМЕНИТЬ

 String oldText = "hello"
 String newText = "Hi";      
 String textBoxText = textbox.getText().toString();

// ЗАМЕНИТЬ СТРУНЫ С ВОЗВРАЩЕННЫМИ СТРУНАМИ

String returnedString = textBoxText.replace( oldText, newText );

// ИСПОЛЬЗОВАТЬ ВЕРНУТЫЕ СТРОКИ ДЛЯ ЗАМЕНЫ НОВОГО СТРОКА В ТЕКСТАБЛОКЕ

textbox.setText(returnedString);

Это не проверено, но это всего лишь пример использования возвращенной строки для замены исходной строки макетов на setText ()!

Очевидно, что для этого примера требуется, чтобы у вас был EditText с идентификатором, равным your_textboxID

0 голосов
/ 22 апреля 2011

Вы делаете только одну ошибку.

используйте там replaceAll() функцию.

например

String str = "Hi";
String str1 = "hello";
str.replaceAll( str, str1 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...