我正在寻找一种在某个分隔符出现时将字符串分成两部分的方法。我知道当字符串看起来像这样时,这很容易做到:
String s = "prefix.key value";
String[] a = s.split("[ :=]",2);
但按照惯例,字符串可能包含转义的分隔符(在分隔符前面直接带有 '\')。所以我更新了正则表达式字符串:
String s = "prefix\ key value";
String[] a = s.split("[^\\\\][ :=]",2);
这会在几乎正确的位置拆分字符串,但会切断键的“y”。这是因为现在正则表达式匹配分隔符和它前面的字符。split() 方法会删除匹配的部分,只返回剩余的字符串。
我有一个使用 split() 并查看返回数组中字符串的结束字符的工作解决方案,但这似乎是一种过于复杂和缓慢的方法。
有没有人有更好的主意?