2015-01-15 2 views
-1

в моем приложении у меня есть EditText, что его текст «Hello my friend, Hello». как я могу заменить второй привет прощай? Я хочу изменить его текст на «Привет, мой друг, прощай». Я использовал оператор replace(), но на прощание заменяет все приветственные слова. могу ли я получить индекс букв и использовать его для замены? например, я говорю, чтобы программа заменила буквы от 18 до 22 на прощание. это мой код:как заменить только одно слово в EditText

String text = edtText.getText().toString().replace("Hello", "goodbye"); 
edtText.setText(text); 
+0

Проверьте этот ответ: http://stackoverflow.com/questions/1660034/replace-last-part-of-string – Kiki

+0

вы заканчивали подстроку, используя начальную и конечную точку –

+1

Это не имеет ничего общего с EditText, это просто вопрос замены слова в 'String'. И об этом наверняка ответили раньше. –

ответ

0

Это должно работать:

public static String replace(String phrase, String before, String after, int index) { 
    String[] splittedPhrase = phrase.split(" "); 
    String output = ""; 
    for (int i = 0, j = 0; i < splittedPhrase.length; i++) { 
     if (i != 0) 
      output += " "; 
     if (splittedPhrase[i].equals(before) && index == j++) 
      output += after; 
     else 
      output += splittedPhrase[i]; 
    } 
    return output; 
} 

Или, в более короткий путь:

public static String replace(String phrase, String before, String after, int index) { 
    int i = 0; 
    String output = ""; 
    for (String s : phrase.split(" ")) 
     output += ((s.equals(before) && index == i++) ? after : s) + " "; 
    return output.substring(0, output.length() - 1); 
} 

Тогда просто:

public static void main(String args[]) { 
    System.out.println(replace("hello world, hello", "hello", "goodbye", 0)); 
    System.out.println(replace("hello world, hello", "hello", "goodbye", 1)); 
    System.out.println(replace("hello world, hello", "hello", "goodbye", 2)); 
} 

Печатный out:

"goodbye world, hello" 
"hello world, goodbye" 
"hello world, hello" 
1

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

String actualString = "Hello my friend, Hello"; 
String finalString = actualString.substring(0, actualString.lastIndexOf("Hello")) + 
        "goodbye" + 
        actualString.substring(actualString.lastIndexOf("Hello") + "Hello".length(), actualString.length()); 
0

Ваше решение.

et = (EditText) findViewById(R.id.editText); 
String text = "Hello my friend , Hello"; 
et.setText(text); 
String[] txt = text.split("Hello"); 
for (int x = 0 ; x < txt.length ; x++) 
    System.out.println(txt[x]); //for cast 
text = "goodbye" + txt[0] + txt[1] + "goodbye"; 
et.setText(text); 

Разделяет эту строку вокруг совпадений данного регулярного выражения.

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

0

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

string hello = "hello"; 
int start =0; 
int end =0; 
String text = edtText.getText().toString(); 
String replacement = "replacement"; 
start=text.indexOf(hello, str.indexOf(hello) + 1); 
end=start+hello.lenght(); 

StringBuilder s = new StringBuilder(); 
s.append(text.substring(0, start))); 
s.append(replacement); 
s.append(text.substring(end); 
edtText.setText(s.toString()); 
Смежные вопросы