我想以最有效的方式从字符串中删除一组字符。
现在我只是复制并粘贴一个代码行,但必须有一个更有效的方法!
我的代码:
ProductName = ProductName.replace("!", "");
ProductName = ProductName.replace("#", "");
ProductName = ProductName.replace("$", "");
ProductName = ProductName.replace("%", "");
ProductName = ProductName.replace("^", "");
ProductName = ProductName.replace("&", "");
ProductName = ProductName.replace("*", "");
ProductName = ProductName.replace("(", "");
ProductName = ProductName.replace(")", "");
ProductName = ProductName.replace("?", "");
ProductName = ProductName.replace("[", "");
ProductName = ProductName.replace("{", "");
ProductName = ProductName.replace("}", "");
ProductName = ProductName.replace("]", "");
ProductName = ProductName.replace("/", "");
ProductName = ProductName.replace(".", "");
ProductName = ProductName.replace("<", "");
ProductName = ProductName.replace(">", "");
ProductName = ProductName.replace(",", "");
答案 0 :(得分:2)
执行此操作的一种方法可能是使用正则表达式及其character class - 例如[abc]
之类的正则表达式代表一个字符a
b
或{{1} }。
你需要在这里小心,因为一些角色即使在角色类中也有特殊含义(如c
,可用于创建-
或a-z
等字符范围。只是代表人物类的结束)
为了避免这些特殊字符出现任何问题,我们可以创建一个区域,其中字符应被视为文字(没有特殊含义的字符)。要创建此类区域,我们可以使用]
(有关它的更多信息,请阅读http://www.regular-expressions.info/characters.html#special部分的最后一段)。
所以你的代码看起来像
\Q...\E
同样根据Java命名约定,变量应以小写字母开头,因此String removeThese = "!#$%^&*()?[{}]/.<>,";
ProductName = ProductName.replaceAll("[\\Q"+removeThese +"\\E]", "");
应为ProductName
。
答案 1 :(得分:0)
另请注意,您可以将调用链接起来:
productName = productName.replace("!", "")
.replace("#", "")
.replace("$", "")
.replace("%", "")
.replace("^", "")
.replace("&", "")
.replace("*", "")
.replace("(", "")
.replace(")", "")
.replace("?", "")
.replace("[", "")
.replace("{", "")
.replace("}", "")
.replace("]", "")
.replace("/", "")
.replace(".", "")
.replace("<", "")
.replace(">", "")
.replace(",", "");
答案 2 :(得分:0)
这可以是一个解决方案。
public class ReplaceDemo {
public static void main(String[] args) {
String[] symbols = {"!", "#", "$","%","^","&","*","?","[", "]", "{", "}", "(", ")", "/", ".", "<",">", ",", };
String ProductName;
for (int i = 0; i<symbols.length ;i++ ) {
ProductName = ProductName.replace(symbols[i], "");
}
}}