按字节拆分字符串

Bar*_*chs 8 java string split

我有一个String有一些ASCII控制字符(即RS(0x1e)和US(0x1f)).我在我的代码中定义了它们:

static public final byte RS  = 0x1E;
static public final byte US  = 0x1F;
Run Code Online (Sandbox Code Playgroud)

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

String[] records = content.split(String.valueOf(RS));
Run Code Online (Sandbox Code Playgroud)

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

String[] records = content.split("\u001e");
Run Code Online (Sandbox Code Playgroud)

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

对此有什么干净的好解决方案?

Mic*_*rry 5

将角色声明为char而不是byte为我修复它 - 以下工作正常:

char RS  = 0x1E;
String s = new String(new char[]{'d', RS, 'e'});
System.out.println(s.split(String.valueOf(RS)).length); //Prints 2
Run Code Online (Sandbox Code Playgroud)

但是,使用字节作为类型会导致它失败:

byte RS  = 0x1E;
String s = new String(new char[]{'d', (char)RS, 'e'});
System.out.println(s.split(String.valueOf(RS)).length); //Prints 1
Run Code Online (Sandbox Code Playgroud)

如果您需要在代码的其他部分中引用它,您当然可以将其转换char回来byte.