我没有遇到任何关于此的文件。
有没有办法找出字符串是否包含Scala中的任何不可打印的字符?
答案 0 :(得分:2)
以下是this question的已接受答案,已翻译成惯用的Scala。
import java.awt.event.KeyEvent
def isPrintableChar(c: Char) =
!Character.isISOControl(c) &&
c != KeyEvent.CHAR_UNDEFINED &&
Option(Character.UnicodeBlock.of(c)).fold(false)(
_ ne Character.UnicodeBlock.SPECIALS)
答案 1 :(得分:1)
以下方法检测到non-printable ASCII characters。一个简单的正则表达式模式用于查找0x20-0x7E
ASCII范围之外的任何字符:
def hasNonprintableAsciiChar(s: String): Boolean = {
val pattern = """[^\x20-\x7E]+""".r
pattern.findFirstMatchIn(s) match {
case Some(_) => true
case None => false
}
}
hasNonprintableAsciiChar("abc-xyz-123")
// res1: Boolean = false
hasNonprintableAsciiChar("abc¥xyz£123")
// res2: Boolean = true
hasNonprintableAsciiChar("abc123" + '\u200B')
// res3: Boolean = true