scala匹配奇数位置的控制字符

scala匹配奇数位置的控制字符,scala,Scala,我有一个数据库列的char2hex()输出,该列是一个十六进制字符字符串,如“41424320202020A20”。我需要检查此十六进制序列是否包含任何控制字符,即ascii范围\x00到\x1F(换行、换行、回车等) 我可以检查一下 scala> val x = "41424320202020200A20" x: String = 41424320202020200A20 scala> x.contains("0A") res107: Boolean = true scala&

我有一个数据库列的char2hex()输出,该列是一个十六进制字符字符串,如“41424320202020A20”。我需要检查此十六进制序列是否包含任何控制字符,即ascii范围\x00到\x1F(换行、换行、回车等)

我可以检查一下

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…没关系。。但如果可能的话,那就好了