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