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

时间:2016-04-16 18:48:08

标签: java android string

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

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

我的代码:

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(",", "");

3 个答案:

答案 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], "");  
    }
}}