在我的应用程序中,我使用.replaceAll()给出字典单词建议并用建议的单词替换所选单词。但是,这将替换整个字符串中的每个子字符串
例如在此String中,
String sentence = "od and not odds as a sample sam. but not odinary";
如果我建议第一个单词为奇数 .replaceAll()会将每次出现的 od 替换为奇数,从而影响第四个单词奇数并将句子更改为
sentence.replaceAll("od", "odd");
//sentence String becomes
sentence ="odd and not oddds as a sample sam. but not oddinary"
将 od 替换为奇数会影响其中包含 od 字符的所有其他字词。
任何人都能帮助我提供更好的方法吗?
答案 0 :(得分:4)
使用正则表达式。对于你的例子,“\ bod \ b”将匹配od作为整个单词。 \ b是单词边界,表示单词的开头或结尾(无论是以点还是空白或其他任何结尾)。
replaceAll方法已经可以使用正则表达式,但如果需要更多功能,可以查看Matcher类。
String REPLACE_WORD = "od"
sentence.replaceAll("\\b" + REPLACE_WORD + "\\b", "odd");
会给你正确的答案。 \告诉java你要写\而不是\ b(它首先解析字符串,然后将该字符串解析为正则表达式)。
答案 1 :(得分:0)
使用replaceAll()
方法中的正则表达式:
\bod\b
这将过滤掉任何其他单词中od
的出现次数。
当然,当您在Java方法中使用它时,您需要转义\
所以
replaceAll("\\bod\\b", "odd");
应该这样做。
答案 2 :(得分:0)
如上所述,您可以使用来自Matcher
的{{1}},它具有许多有用的功能。
Java.util.regex.*
输出结果为:
我发现了一种奇怪的气味。