我有一个字符串,包含字符a-z
,A-Z
,0-9
,(
,)
,+
,{{1}等等。
我想找到该字符串中的每个单词,并用-
(添加单引号)替换为相同的单词。该字符串中的单词可以在“(”,“)”和空格之前/之后。
我该怎么做?
输入:
'word'
输出:
(Movie + 2000)
答案 0 :(得分:7)
保持简单!这可以满足您的需求:
String input = "(Movie + 2000)";
input.replaceAll("\\b", "'");
// Outputs "('Movie' + '2000')"
这使用正则表达式\b
,这是一个“单词边界”。什么可以更简单?
答案 1 :(得分:0)
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
String str1 = "Hello string";
String str2 = "str";
System.out.println(replace(str1, str2, "'" + str2 + "'"));
}
static String replace(String str, String pattern, String replace) {
int s = 0;
int e = 0;
StringBuffer result = new StringBuffer();
while ((e = str.indexOf(pattern, s)) >= 0) {
result.append(str.substring(s, e));
result.append(replace);
s = e + pattern.length();
}
result.append(str.substring(s));
return result.toString();
}
}
输出:你好'str'ing
WBR
答案 2 :(得分:0)
正如评论中所述,正则表达式是一个很好的方法:
String input = "(Movie + 2000)";
input = input.replaceAll("[A-Za-z0-9]+", "'$0'");
你没有给出'单词'的精确定义,所以我认为它是字母和数字的任意组合。
编辑好的,感谢@Buhb解释为什么这个解决方案不是最好的解决方案。 @Bohemian给出了更好的解决方案。
答案 3 :(得分:0)
仅在发生替换时返回字符串才有意义,请参阅下文:
if(s>0)
return result.toString();
else
return null;