【发布时间】:2015-04-05 09:08:38
【问题描述】:
我试图根据其中存在的某个短语来替换字符串的一部分。考虑字符串“你好,我的 Dg6Us9k。我还活着。”。
我想搜索“my”阶段并删除右侧的 8 个字符,这将删除哈希码。这给出了字符串 “你好。我还活着。” 我如何在 Java 中做到这一点?
【问题讨论】:
标签: java string replace find substring
我试图根据其中存在的某个短语来替换字符串的一部分。考虑字符串“你好,我的 Dg6Us9k。我还活着。”。
我想搜索“my”阶段并删除右侧的 8 个字符,这将删除哈希码。这给出了字符串 “你好。我还活着。” 我如何在 Java 中做到这一点?
【问题讨论】:
标签: java string replace find substring
你可以通过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 个字符,没有任何内容。
【讨论】:
像这样使用正则表达式:
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
【讨论】:
a-zA-Z_
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);
【讨论】: