如何替换 Java 中的字符串的一部分?

How to replace part of a String in Java?

我正在尝试根据字符串中存在的某个短语来替换字符串的一部分。考虑字符串 "Hello my Dg6Us9k. I am alive.".

我想搜索 "my" 阶段并向右删除 8 个字符,这将删除哈希码。这给出了字符串 "Hello. I am alive." How can i do this in Java?

应该这样做:

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

替换字符串从 "my" 开始,长度为 11 个字符。

您可以通过 string.replaceAll 函数实现。

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

如有必要请添加 \b\b 称为单词边界,匹配单词字符和非单词字符。 .{8} 完全匹配以下 8 个字符。

还要删除 my

之前的 space
System.out.println("Hello my Dg6Us9k. I am alive.".replaceAll("\smy.{8}", ""));

像这样使用正则表达式:

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. I am alive

Java 字符串是不可变的,因此您不能 更改 字符串。您必须创建一个新字符串。因此,找到 "my" 的索引 i。然后连接 (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);