通过字符集确定特殊字符

时间:2019-01-10 11:43:20

标签: java android kotlin

我想检查我的字符是否是特殊符号,还是不使用标准Charset(目前,我已经通过[^a-zA-Z0-9 ])的正则表达式检查来实现它。是否可以通过Java或Charset类进行检查?科特林?

2 个答案:

答案 0 :(得分:1)

不幸的是,Java的Charset上没有定义专用功能来确定它是否包含特殊字符。

使用正则表达式完全可以,但是您也可以这样做:

fun Char.isSpecialChar() = toLowerCase() !in 'a'..'z' && !isDigit() && !isWhitespace()

fun CharSequence.containsSpecialChars() = any(Char::isSpecialChar)

'H'.isSpecialChar() // false
'&'.isSpecialChar() // true
"Hello World".containsSpecialChars() // false
"Hello & Goodbye".containsSpecialChars() // true

这是Kotlin解决方案,因此,如果您有Java Charset,则可能需要进行强制转换。

答案 1 :(得分:0)

看看类java.lang.Character的静态成员方法(isDigit,isLetter,isLowerCase等)

示例:

String str = "Hello World 123 !!";
int specials = 0, digits = 0, letters = 0, spaces = 0;
for (int i = 0; i < str.length(); ++i) {
   char ch = str.charAt(i);
   if (!Character.isDigit(ch) && !Character.isLetter(ch) && !Character.isSpace(ch)) {
      ++specials;
   } else if (Character.isDigit(ch)) {
      ++digits;
   } else if (Character.isSpace(ch)) {
      ++spaces;
   } else {
      ++letters;
   }
}

Reference