按字节拆分字符串

时间:2015-04-29 14:51:14

标签: java string split

我有一个String,其中包含一些ASCII控制字符(即RS(0x1e)和US(0x1f))。我已经在我的代码中定义了它们:

static public final byte RS  = 0x1E;
static public final byte US  = 0x1F;

稍后在我的代码中,我想使用这些字符拆分字符串:

String[] records = content.split(String.valueOf(RS));

但是,这不能正常工作。经过一番摆弄,我发现了这个

String[] records = content.split("\u001e");

确实有效,但在这种情况下,我必须记住代码。我也在其他部分使用RS静态字节,所以只是改变它不是一个真正的选择。我当然可以创建RS_STRING或其他东西,但这意味着双重工作。

对此有什么干净利益的解决方案吗?

1 个答案:

答案 0 :(得分:2)

问题是你使用String.valueOf(),因为没有String.valueOf(byte)

而是将字节静默扩展为int并调用String.valueOf(int)。此方法返回int的十进制字符串表示。

这就是为什么将RS声明为char的建议修正了它,String.valueOf(char)确实做了你所期望的(给它一个带有该char的字符串)。

您可以选择在转换为String表示时添加显式强制转换:String.valueOf((char) RS)并将costant RS声明为字节。