Определить специальный символ через Charset - PullRequest
0 голосов
/ 10 января 2019

Я хочу проверить, является ли мой персонаж специальным символом или не использует стандартную кодировку Charset (на данный момент я реализовал это с помощью проверки регулярных выражений [^a-zA-Z0-9 ]). Можно ли проверить класс Charset в Java или Kotlin?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

К сожалению, для 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, может потребоваться некоторое приведение.

0 голосов
/ 10 января 2019

Взгляните на класс 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;
   }
}

Ссылка :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...