我试图根据其中存在的某个短语替换部分字符串。考虑字符串" Hello my Dg6Us9k。我还活着。" 。
我想寻找阶段"我的"并删除右侧的8个字符,这将删除哈希码。这给出了字符串" Hello。我还活着。" 我怎么能用Java做到这一点?
答案 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);