scala匹配奇数位置的控制字符
我有一个数据库列的char2hex()输出,该列是一个十六进制字符字符串,如“41424320202020A20”。我需要检查此十六进制序列是否包含任何控制字符,即ascii范围\x00到\x1F(换行、换行、回车等) 我可以检查一下scala匹配奇数位置的控制字符,scala,Scala,我有一个数据库列的char2hex()输出,该列是一个十六进制字符字符串,如“41424320202020A20”。我需要检查此十六进制序列是否包含任何控制字符,即ascii范围\x00到\x1F(换行、换行、回车等) 我可以检查一下 scala> val x = "41424320202020200A20" x: String = 41424320202020200A20 scala> x.contains("0A") res107: Boolean = true scala&
scala> val x = "41424320202020200A20"
x: String = 41424320202020200A20
scala> x.contains("0A")
res107: Boolean = true
scala> x.indexOf("0A")
res109: Int = 16
scala>
但我需要确保“0A”始终匹配字符串x中的奇数位置,以便正确检查十六进制序列
我可以像这样把它们组合起来
scala> x.indexOf("0A") %2==0 && x.contains("0A")
res111: Boolean = true
scala>
但这只会在控件字符第一次出现时停止
如何从十六进制字符串中获取所有控制字符
示例:-如果我有类似“414243202020200A200B000C”的字符串
那么我的输出应该是列表(“0A”、“0B”、“00”、“0C”)谢谢您提供了所需的输出,在这段代码中它是
res
:
val x = "41424320202020200A200B000C"
val controlCharacters = (0x00 to 0x1F).map(c => f"$c%02X".toUpperCase)
val res = (x.toUpperCase.grouped(2).toSeq intersect controlCharacters).toList
编辑:我将您提到的控制字符范围放在一个解决方案中
希望能有所帮助。订单对你的产出有影响吗?@Benjamin…没关系。。但如果可能的话,那就好了