如何找到所有特殊字符并在给定字符串中打印?

时间:2015-06-02 11:11:48

标签: java regex string

我需要找到所有特殊字符,甚至是sting中的空格并将其打印为输出...

我尝试了以下内容。

public class SpecialChar {

    public static void main(String[] args) {

        String s = "adad , dsd  r dsdsd,,,,..////";

        for (int i = 0; i < s.length(); i++) 
        {
            System.out.println(s.charAt(i));
        }

        System.out.println("i");


        String REGEX = "[^&%$#@!~ ,]*";
        Pattern pattern = Pattern.compile(REGEX);

        Matcher matcher = pattern.matcher(i);
        if (matcher.matches()) {
            System.out.println("matched");
        }
    }
}

5 个答案:

答案 0 :(得分:10)

一点正则表达式适合你:)

public static void main(String[] args) {
    String s = "adad , dsd  r dsdsd,,,,..////";
    System.out.println(s.replaceAll("[a-zA-Z]+", "")); // remove everything apart from "a-z and A-Z"

}

O / P:

 ,    ,,,,..////

答案 1 :(得分:2)

我只是想指出你的问题,你正在使用以下正则表达式:

[^&%$#@!~ ,]*

表示“任何文字都期望”&amp;%$#@!〜,“。

请注意,您的设置以^开头,这意味着它否定该设置并匹配该设置中的每个文字。

您有两种选择:退出^,或将其移至上一个位置。

答案 2 :(得分:0)

我不知道这是否是你需要的,但现在是:

       String s = "adad , dsd  r dsdsd,,,,..////";

    String REGEX = "[,./]";
    Pattern pattern = Pattern.compile(REGEX);
    Matcher matcher = pattern.matcher(s);

    for (int i = 0; i < s.length(); i++) {
        if (matcher.find()) {
            System.out.println(matcher.group(0));
        }
    }

答案 3 :(得分:0)

如果您不想使用正则表达式,可以尝试以下操作:

public static void main(String[] args) {

    String s = "adad , dsd  r dsdsd,,,,..////";
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (!Character.isLetterOrDigit(c)) {
            System.out.print(c);
        }
    }

}

这里使用Character类中的现有API,用于检查字符是字母还是数字,如果不打印它。

答案 4 :(得分:0)

public class SpecialChar {

public static void main(String[] args) {
    String s = "adad , dsd  r dsdsd,,,,..////";

    for (int i = 0; i < s.length(); i++) {
        if (!(((int) s.charAt(i) >= 65 && (int) s.charAt(i) <= 90) || ((int) s.charAt(i) >= 97 && (int) s.charAt(i) <= 122)))
            System.out.println(s.charAt(i));
    }
}
}