Я пытаюсь заменить часть строки на основе определенной фразы, присутствующей в ней. Рассмотрим строку "Привет, мой Dg6Us9k. Я жив".
Я хочу найти фазу "мой" и удалить 8 символов вправо, что приведет к удалению хеш-кода. Это дает строку "Привет, я жив". Как я могу сделать это на Java?
Используйте регулярное выражение следующим образом:
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
Вы можете добиться этого через функцию string.replaceAll
.
string.replaceAll("\\bmy.{8}", "");
При необходимости добавьте \\b
. \\b
называется границей слова, которая совпадает между символом слова и символом, отличным от слова. .{8}
соответствует точно следующим 8 символам.
Чтобы удалить также пространство перед my
System.out.println("Hello my Dg6Us9k. I am alive.".replaceAll("\\smy.{8}", ""));
Это должно сделать это:
String s = ("Hello my Dg6Us9k. I am alive");
s.replace(s.substring(s.indexOf("my"), s.indexOf("my")+11),"");
Это заменяет строку начинается с "my" и равно 11 char с ничем.
Строки 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;
Если вы хотите быть гибкими относительно длины хэш-кода, используйте следующее выражение:
String foo="Hello my Dg6Us9k. I am alive.";
String bar = foo.replaceFirst("\\smy.*?\\.", ".");
System.out.println(bar);
a-zA-Z_