Java 从字符串中删除大量字符的更简单方法?

Java 从字符串中删除大量字符的更简单方法?,java,android,string,Java,Android,String,我想以最有效的方式从字符串中删除一组字符 现在我只是复制和粘贴一行代码,但必须有一个更有效的方法 我的代码: ProductName = ProductName.replace("!", ""); ProductName = ProductName.replace("#", ""); ProductName = ProductName.replace("$", ""); ProductName = ProductName.replace("%", ""); ProductName = Produ

我想以最有效的方式从字符串中删除一组字符

现在我只是复制和粘贴一行代码,但必须有一个更有效的方法

我的代码:

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(",", "");
ProductName=ProductName.replace(“!”,”);
ProductName=ProductName。替换(“#”和“”);
ProductName=ProductName。替换(“$”,“”);
ProductName=ProductName。替换(“%”,“”);
ProductName=ProductName。替换(“^”和“);
ProductName=ProductName。替换(&,“”);
ProductName=ProductName。替换(“*”,“”);
ProductName=ProductName.replace(“(”,”);
ProductName=ProductName。替换(“),”);
ProductName=ProductName。替换(“?”,“”);
ProductName=ProductName。替换(“[”,”);
ProductName=ProductName.replace(“{,”);
ProductName=ProductName.replace(“}”和“);
ProductName=ProductName.replace(“]”,“”);
ProductName=ProductName。替换(“/”,“”);
ProductName=ProductName.replace(“.”,“”);
ProductName=ProductName.replace(“,”);
ProductName=ProductName。替换(“,”,“”);

不要使事情过于复杂。现在,试着把重点放在更容易维护的方式上,而不是效率上

一种方法是使用正则表达式,其-例如类似正则表达式的
[abc]
表示一个字符,该字符可以是
a
b
c

这里您只需要小心,因为有些字符即使在字符类中也有特殊的含义(如
-
,可用于创建字符范围,如
a-z
,或
]
,仅表示字符类的结尾)。
为了避免此类特殊字符出现任何问题,我们可以创建一个区域,在该区域中,所有L字符都应被视为文字(没有特殊含义的字符)。要创建这样的区域,我们可以使用
\Q..\E
(有关它的更多信息,请阅读本节最后一段)

所以你的代码看起来像

String removeThese = "!#$%^&*()?[{}]/.<>,";
ProductName = ProductName.replaceAll("[\\Q"+removeThese +"\\E]", "");
String removeThese=“!#$%^&*()?[{}]/,”;
ProductName=ProductName.replaceAll(“[\\Q”+删除这些内容+“\\E]”,”);

此外,根据Java命名约定,变量应以小写字母开头,因此您的
ProductName
应为
ProductName

还要注意,您可以像这样链接调用:

productName = productName.replace("!", "")
    .replace("#", "")
    .replace("$", "")
    .replace("%", "")
    .replace("^", "")
    .replace("&", "")
    .replace("*", "")
    .replace("(", "")
    .replace(")", "")
    .replace("?", "")
    .replace("[", "")
    .replace("{", "")
    .replace("}", "")
    .replace("]", "")
    .replace("/", "")
    .replace(".", "")
    .replace("<", "")
    .replace(">", "")
    .replace(",", "");
productName=productName。替换(“!”,“”)
.替换(“#”和“”)
.替换(“$”,“”)
.替换(“%”,“”)
.替换(“^”,”)
.替换(“&”,”)
.替换(“*”,“”)
.替换(“(”,“”)
.替换(“)”,“”)
.替换(“?”,“”)
.替换(“[”,“”)
.replace(“{,”)
.replace(“}”和“”)
.替换(“]”,“”)
.替换(“/”,“”)
.替换(“.”,“”)
.替换(“,”)
.替换(“,”,”);

这可能是一个解决方案

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], "");  
    }
}}
公共类替换演示{
公共静态void main(字符串[]args){
字符串[]符号={“!”、“#”、“$”、“%”、“^”、“&”、“*”、“?”、“[”、“]”、“{”、“}”、“(“、”、“/”、“、”、“、”、”、“}”;
字符串名称;

对于(int i=0;iMore-efficient!=代码行数更少…您可以使用
进行循环。或者使用正则表达式,如果您需要更少的代码行数。请注意,以小写字母开头变量名是惯例。@Tunaki-true,但在这种情况下,可能有更好的方法,请重新表述您的问题。是吗要求更简单的方法还是更有效的方法?