Определите специальный символ с помощью Charset

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
121
2

Ответы 2

Взгляните на методы статических членов класса 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;
   }
}

Ссылка:

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

Другие вопросы по теме