2017-07-27 85 views
0

我尝试按字节值拆分一些String。 像0x00分配器的“first \ x00second”一样。我发现编译器不能将\ x标记与变量组合在一起。在 x十六进制正则表达式中使用变量

static public ArrayList split_by_byte(String value, byte spliter) { 

if (spliter < 0) 
throw new IllegalArgumentException("Отрицательное значение разделителя: " + spliter); 

ArrayList<String> result = new ArrayList(); 

String[] groups = value.split("[\\x" + spliter + "]"); 

for (String group : groups) { 

result.add(group); 
} 

return result; 
} 

如何在\ xNN等模式中使用变量值?

+0

你'spliter'可变正利用其base10值分配,也许尝试将其转换为十六进制的等效字符串 – AguThadeus

+0

只是转换了'spliter' [值从十六进制到字符](https://stackoverflow.com/questions/4785654/convert-a-string-of-hex-into-ascii-in-java)。 –

回答

0

在正则表达式中,不能在单引号/非插值字符串中使用\ x。词法分析器必须看到它。

因为代字符不是元字符。

添加使用正则表达式“调试”,你会看到实际发生了什么。

你也可以使用模式和匹配类和分裂法......

相关问题