我目前有一个包含字符A,B和C的字符串,例如字符串看起来像
"A some other random stuff B C"
其他随机内容不包含A,B或C我想替换A,B和C C分别带有'A','B'和'C',这是目前我正在做的最好的方法:
String.replace("A", "'A'").replace("B", "'B'").replace("C", "'C'")
答案 0 :(得分:16)
cletus'的答案可以正常工作,但如果它们可以是更长的字符串则不会,例如,你只是将它们称为A,B和C.如果它们是更长的字符串,则需要执行:
String input = "FOO some other random stuff BAR BAZ";
String output = input.replaceAll("FOO|BAR|BAZ", "'$0'");
您还需要转义FOO,BAR和BAZ中的任何特殊字符,以便它们不会被解释为特殊的正则表达式符号。
答案 1 :(得分:10)
使用正则表达式:
String input = "A some other random stuff B C";
String output = input.replaceAll("[ABC]", "'$0'");
输出:
'A' some other random stuff 'B' 'C'
答案 2 :(得分:3)
从Apache Commons Lang及其各种replace
方法中查看StringUtils
。
答案 3 :(得分:2)
我认为正则表达式并不适合,如果它们是相当复杂的字符串。
考虑将它包装在您自己的实用程序方法中,将数组或列表作为参数。
public static String replace(String string, String[] toFind, String[] toReplace) {
if (toFind.length != toReplace.length) {
throw new IllegalArgumentException("Arrays must be of the same length.");
}
for (int i = 0; i < toFind.length; i++) {
string = string.replace(toFind[i], toReplace[i]);
}
return string;
}
也许Apache Commons或Google Code中已有一个。如果您更喜欢第三方API以上的本土产品,请试一试。
修改:为什么在技术上正确但在您看来不首选答案?只是不要upvote。
答案 4 :(得分:1)
其他人的答案更好,但在您尝试学习的假设下,我想指出原始代码的问题。
这是你要做的事情的“固定”版本(使用你的风格,这很接近)以及你需要做的事情才能让它发挥作用:
public String quoteLetters(String s)
{
return s.replace("A", "'A'").replace("B", "'B'").replace("C", "'C'");
}
以下是您遇到的问题: