在Java中搜索和替换单词

在Java中搜索和替换单词,java,string,search,replace,Java,String,Search,Replace,我有一个字符串,包含字符a-z,a-z,0-9,(,),+,-,等等 我想找到该字符串中的每个单词,并用相同的单词替换为'word'(添加了单引号)。该字符串中的单词可以前后加“(“,”)和空格 我该怎么做呢 输入: (Movie + 2000) 输出: ('Movie' + '2000') 输出:Hello'str'ing WBR正如评论中所述,正则表达式是一种很好的方法: String input = "(Movie + 2000)"; input = input.replaceAll

我有一个字符串,包含字符
a-z
a-z
0-9
+
-
,等等

我想找到该字符串中的每个单词,并用相同的单词替换为
'word'
(添加了单引号)。该字符串中的单词可以前后加“(“,”)和空格

我该怎么做呢

输入:

(Movie + 2000)
输出:

('Movie' + '2000')
输出:Hello'str'ing


WBR

正如评论中所述,正则表达式是一种很好的方法:

String input = "(Movie + 2000)";

input = input.replaceAll("[A-Za-z0-9]+", "'$0'");
你没有给出“单词”的精确定义,所以我假设它是字母和数字的任意组合


编辑好的,感谢@Buhb解释为什么这个解决方案不是最好的。@Bohemian给出了更好的解决方案。

保持简单这就是您需要的:

String input = "(Movie + 2000)";

input.replaceAll("\\b", "'");  
// Outputs  "('Movie' + '2000')"

这使用正则表达式
\b
,它是一个“字边界”。什么更简单?

只有在发生替换时才返回字符串是有意义的,请参见以下内容:

if(s>0)
    return result.toString();
else
    return null;

正则表达式特别适合这种工作;他们将在线性时间内完成,甚至在一行代码中完成。请您展示一些输入和输出示例。我不知道需要替换哪些单词,所以我无法像您那样手动完成。谢谢。正是我想要的。太复杂了。Regex已经有了“单词边界”的定义-它是\b:请参阅我的solution@Bohemian字体嗯,我总是忘记那些。这就是否决票的原因吗?解决方案也不同。如果你想在诸如crêpe之类的词周围加引号,这个解决方案就行不通了。这可能还可以,取决于您的用例(我不知道问题中的“etc.”中是否包含非英语字符)。这看起来不像是对这个问题的回答。质量很差。阅读->
if(s>0)
    return result.toString();
else
    return null;