从字符串中删除所需的字符(来自字符串或char [])

时间:2014-07-25 18:46:23

标签: java

从字符串中删除所需的字符(来自字符串或char [])

我搜索过Java部分,但没有找到合适的答案。我正在测试一些基本的(极其基本的)对象,这些对象模糊了序列化只是为了感受它。


要遮挡我的物体,我需要移除我放在物体上的附加角色。

E.g

  

个人资料名称是原创“John”

     然后我把它变成了“#J / oH @ n”

然后我需要通过删除符号将后者转换为原始版本。但是我找不到合适/有效的方法。


请记住,我的符号列表可以保存在char []中,或只保存一个字符串,如下所示:

char[] obcChars = {'#', ';', '"', '¬', '¦', '+', ';'
        , '/', '.', '^', '&', '$', '*'
        , '[', '@', '-', '~', ':'};

String s = new String(obcChars);

您需要使用哪种方法来方便您的回答!我还要提前感谢你。

3 个答案:

答案 0 :(得分:2)

要从String中删除索引处的字符,您必须使用StringBuilder,它是String的可变版本(您可以更改StringBuilders)

String s = "Hello World";
StringBuilder sb = new StringBuilder(s);
sb.removeCharAt(sb.indexOf('e'));
s = sb.toString();
System.out.println(s); // Prints Hllo World

答案 1 :(得分:2)

您可以使用正则表达式:

    String obcChars = "[^a-zA-Z]";
    String word = "#J/oH@n";
    word = word.replaceAll(obcChars, "");
    System.out.println("word = " + word);

<强>输出

word = JoHn

答案 2 :(得分:1)

您可以创建一个包含要删除的字符的正则表达式:

    char[] obcChars = {'#', ';', '"', '¬', '¦', '+', ';'
            , '/', '.', '^', '&', '$', '*'
            , '[', '@', '-', '~', ':'};
    StringBuilder sb = new StringBuilder();
    sb.append(obcChars[0]);
    for (int i=1; i<obcChars.length; i++) {
        sb.append("|\\");
        sb.append(obcChars[i]);
    }
    // sb now contains the regex #|\;|\"|\¬|\¦|\+|\;|\/|\.|\^|\&|\$|\*|\[|\@|\-|\~|\:

然后只需使用String#replaceAll()方法将它们从输入字符串中取出:

    String oName = "#J/oH@n";
    System.out.println(oName.replaceAll(sb.toString(), "")); // prints JoHn

注意

如果您知道要删除哪些字符,并且它们是非alpha的有限子集,这将非常有用。如果您只想删除所有非字母,请参阅@ alfasin的答案,以便更简单地解决该问题。