【发布时间】:2015-06-25 01:43:17
【问题描述】:
我想删除这些特殊字符:☺ ☼
我只想要字符 A-Z、0-9 以及可以使用 shift 键和数字键入的符号,例如 !和@。
这是我现在拥有的代码,它仅在字符串包含来自其他语言的字符时才返回 true。
public static boolean hasSymbols(String v) {
boolean b = false;
byte bytearray [] = v.getBytes();
CharsetDecoder d = Charset.forName("US-ASCII").newDecoder();
try {
CharBuffer r = d.decode(ByteBuffer.wrap(bytearray));
r.toString();
} catch (Exception e) {
return true;
}
return b;
}
【问题讨论】:
-
您是在询问删除字符的代码,还是询问您的函数是否是检测它们的好方法?
-
@galdre nope,该问题要求删除所有“非字母数字字符”,而此处 OP 要求删除“特殊字符”(如果通过代码判断,则为非 ascii)。
-
是的,但是非常接近——这两个问题之间没有本质上的不同,只是表面上。
-
@galdre 不正确:不应删除像
?!/,.这样的字符,尽管它们不是字母数字 -
也许你可以使用一些简单的正则表达式匹配?