首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过字符集确定特殊字符

通过字符集确定特殊字符
EN

Stack Overflow用户
提问于 2019-01-10 19:43:20
回答 2查看 115关注 0票数 0

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

EN

回答 2

Stack Overflow用户

发布于 2019-01-10 20:54:25

不幸的是,在Java的Charset上没有定义专门的函数来确定它是否包含特殊字符。

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-01-10 20:04:36

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

示例:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54127961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档