CppCat Asked:2020-06-23 19:09:06 +0000 UTC2020-06-23 19:09:06 +0000 UTC 2020-06-23 19:09:06 +0000 UTC 仅当单词附近没有字符时如何替换字符串中的单词 772 例如,我有一个 string привет приветик привет,如何在不触及原始单词的情况下替换所有内容привет(приветик否则приветик它会变成приветик hello приветик)? java 2 个回答 Voted Best Answer Имя Фамилия 2020-06-23T20:10:52Z2020-06-23T20:10:52Z 使用正则表达式: String s = "привет приветик привет"; s = s.replaceAll("привет(?!\\S)","приветик"); 而如果你想让单词两边都被空格包围,那么正则表达式应该这样写:(?<!\\S)привет(?!\\S). 带问号和等号的括号称为Lookaround。您可以在 Internet 上阅读有关它的信息。 PS:我改了一下:原来是(?=|$),换成(?=\\s|$)比较好。 Сан Саныч 2020-06-23T20:03:13Z2020-06-23T20:03:13Z 非常粗鲁和笨拙,但结果似乎是你想要的...... public class TestClass { public static void main(String[] args) { new TestClass().run(); } public void run() { Scanner keyboardScanner = new Scanner(System.in); String inString = keyboardScanner.nextLine(); String shortMessage = shortifyMessage(inString); System.out.println(shortMessage); } public String shortifyMessage(String str) { String s = str; s = s.replace("привет" , "приветик"); s = s.replace("приветикик", "приветик"); return s; } }
使用正则表达式:
而如果你想让单词两边都被空格包围,那么正则表达式应该这样写:
(?<!\\S)привет(?!\\S).带问号和等号的括号称为
Lookaround。您可以在 Internet 上阅读有关它的信息。PS:我改了一下:原来是(?=|$),换成(?=\\s|$)比较好。
非常粗鲁和笨拙,但结果似乎是你想要的......