我需要找到所有特殊字符,甚至是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");
}
}
}
答案 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));
}
}
}