如何用Java替换部分String?

时间:2015-02-05 13:28:13

标签: java string replace find substring

我试图根据其中存在的某个短语替换部分字符串。考虑字符串" Hello my Dg6Us9k。我还活着。"

我想寻找阶段"我的"并删除右侧的8个字符,这将删除哈希码。这给出了字符串" Hello。我还活着。" 我怎么能用Java做到这一点?

5 个答案:

答案 0 :(得分:5)

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

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

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

要删除my

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

答案 1 :(得分:2)

这应该这样做:

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

那就是替换字符串从" my"并且是11个字符长而没有。

答案 2 :(得分: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. I am alive

答案 3 :(得分:1)

Java字符串是不可变的,因此您无法更改字符串。您必须创建一个新字符串。所以,找到“我的”的索引 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;

答案 4 :(得分:0)

如果您想对哈希码长度保持灵活性,请使用以下正则表达式:

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