Как заменить часть строки в Java?

1

Я пытаюсь заменить часть строки на основе определенной фразы, присутствующей в ней. Рассмотрим строку "Привет, мой Dg6Us9k. Я жив".

Я хочу найти фазу "мой" и удалить 8 символов вправо, что приведет к удалению хеш-кода. Это дает строку "Привет, я жив". Как я могу сделать это на Java?

Теги:
string
find
replace
substring

5 ответов

1
Лучший ответ

Используйте регулярное выражение следующим образом:

public static void main(String[] args) {
    String s = "Hello my Dg6Us9k. I am alive";
    String newString=s.replaceFirst("\\smy\\s\\w{7}", "");
    System.out.println(newString);
}

O/P: Hello. я am alive Hello. я am alive

  • 0
    W перед скобками означает, что он будет искать слово? 7 - максимальная длина или необходимая длина?
  • 1
    @Kahler - точный 7. w может соответствовать a-zA-Z_
Показать ещё 2 комментария
5

Вы можете добиться этого через функцию string.replaceAll.

string.replaceAll("\\bmy.{8}", "");

При необходимости добавьте \\b. \\b называется границей слова, которая совпадает между символом слова и символом, отличным от слова. .{8} соответствует точно следующим 8 символам.

Чтобы удалить также пространство перед my

System.out.println("Hello my Dg6Us9k. I am alive.".replaceAll("\\smy.{8}", ""));
  • 0
    Что вы имеете в виду под «добавить \\ b, если необходимо»? Что оно делает?
  • 0
    @TheLostMind редактируется в соответствии с его ожидаемым выводом, но он говорит, что я хочу найти фазу «мой» и удалить 8 символов справа`
Показать ещё 1 комментарий
2

Это должно сделать это:

String s = ("Hello my Dg6Us9k. I am alive");
s.replace(s.substring(s.indexOf("my"), s.indexOf("my")+11),"");

Это заменяет строку начинается с "my" и равно 11 char с ничем.

  • 0
    Это тоже работает, спасибо за предложение :)
1

Строки Java неизменяемы, поэтому вы не можете изменить строку. Вы должны создать новую строку. Итак, найдите индекс я "my". Затем объедините подстроку до (0... i) и после (i + 8...).

int i = s.indexOf("my");
if (i == -1) { /* no "my" in there! */ }
string ret = s.substring(0,i);
ret.concat(s.substring(i+2+8));
return ret;
  • 0
    Приятный момент о неизменности.
0

Если вы хотите быть гибкими относительно длины хэш-кода, используйте следующее выражение:

String foo="Hello my Dg6Us9k. I am alive.";
String bar = foo.replaceFirst("\\smy.*?\\.", ".");
System.out.println(bar);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню