Java 从字符串中删除特定单词
我试图使用函数Java 从字符串中删除特定单词,java,replace,Java,Replace,我试图使用函数replace()或replaceAll()从某个字符串中删除某个特定单词,但这些函数会删除该单词的所有出现,即使它是另一个单词的一部分 例如: 输出:“不喜欢,但MTAKE很常见” 所需输出:“不喜欢,但错误很常见” 如何仅替换字符串中的整个单词?您可以尝试将“is”替换为“”。前一个空格和后一个空格替换为单个空格 更新: 为了使它适用于句子中的第一个“is”,还可以将“is”替换为“for”。用空字符串替换第一个is和第一个空格。content=content.replaceA
replace()
或replaceAll()
从某个字符串中删除某个特定单词,但这些函数会删除该单词的所有出现,即使它是另一个单词的一部分
例如:
输出:“不喜欢,但MTAKE很常见”
所需输出:“不喜欢,但错误很常见”
如何仅替换字符串中的整个单词?您可以尝试将“is”替换为“”。前一个空格和后一个空格替换为单个空格
更新:
为了使它适用于句子中的第一个“is”,还可以将“is”替换为“for”。用空字符串替换第一个is和第一个空格。
content=content.replaceAll(“\\Wis\\W| ^is\\W|\\Wis$”,”)代码>见鬼
String regex = "\\s*\\bis\\b\\s*";
content = content.replaceAll(regex, "");
请记住,使用正则表达式需要使用replaceAll(…)
,而不是replace(…)
\\b
提供单词边界
\\s*
将要删除的单词两侧的所有空白都清除掉(如果您也要删除)
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
字符串输入=s.nextLine();
char c=s.next().charAt(0);
System.out.println(removeAllOccurrencesOfChar(input,c));
}
公共静态字符串removeAllOccurrencesOfChar(字符串输入,字符c){
字符串r=“”;
对于(int i=0;i
是否需要使用“替换”?用绳子?您必须搜索要替换的不同字符串吗?您应该添加所有字符串中要替换的部分,也许您可以使用正则表达式来执行此操作,因为您可能需要特别处理这种情况,因为大写字母的缘故,可能需要多个replaceAll()
调用才能工作?包括一个replaceAll(“is\。”,“)代码>或类似的东西来捕捉最后一个…你们都是对的。非常感谢。我已经更新了答案以包括该案例。如果字符串以“is”结尾,则还必须添加该大小写,总共添加3个。此外,正如Rob后来添加的那样,在额外的replaceAll调用中也应该考虑大写。您不需要replaceAll(…)
notreplace(…)
来使用正则表达式的魔力吗?@HovercraftFullOfEels抱歉,没有测试。测试后编辑。:)还有一个问题。如果句子是“dog is cat”,则此代码将删除单词“is”两侧的空格,并将其改为“dogcat”。我认为最好编写content=content.replaceAll(regex,“”)
,然后修剪结尾处的空格。请在代码中添加一些解释,以便其他人可以从中学习。这并不能解决问题。OP希望删除所有出现的is
。代码将删除第一个字符的所有匹配项。
String regex = "\\s*\\bis\\b\\s*";
content = content.replaceAll(regex, "");
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String input = s.nextLine();
char c = s.next().charAt(0);
System.out.println(removeAllOccurrencesOfChar(input, c));
}
public static String removeAllOccurrencesOfChar(String input, char c) {
String r = "";
for (int i = 0; i < input.length(); i ++) {
if (input.charAt(i) != c) r += input.charAt(i);
}
return r;
}
}