如何在忽略/的同时使用指定的分隔符拆分 java 中的字符串?
How to split a string in java with a specified delimiter while ignoring /?
我试图阅读有关正则表达式和转义的内容,但没有成功。
我有一个看起来像这样的字符串:
String s = "4/18/2015|Planned|Linux|Maintenance";
我想用分隔符“|”拆分它:
String[] tokens = s.split("|");
我期望的正确结果是
tokens[0] is "4/18/2015",
tokens[1] is "Planned",
tokens[2] is "Linux",
token[3] is "Maintenance",
然而它给了我一些像这样的奇怪结果:
tokens[0] is null
tokens[1] is 4
tokens[2] is /
and tokens[3] is 1
我猜这是因为日期中的斜杠“/”。我尝试搜索许多现有问题并尝试了建议的方法,但无济于事。
只需使用
split("\x7C")
或
split("\|")
针对管道字符“|”进行拆分时需要转义或使用相应的 unicode 值。
转义竖线字符:
s.split("\|");
因为正则表达式中的管道符号表示或,所以要转义它你需要 \|
但在正则表达式中你也需要转义 \
所以 \|
可以工作。
或按照 mushfek0001 的建议:
split("\x7C")
.
大多数正则表达式方言中的竖线是交替的元字符;基本上你要求正则表达式引擎在这里做的是:"split against the empty string or... the empty string".
而且,呃,这意味着你每次都可能会变成空的,除非正则表达式引擎不是傻瓜,如果在拆分中检测到空匹配,引擎将在再次拆分之前前进一个字符.. . 因此你的结果(不确定为什么第一个元素是 null
而不是空字符串)。
因此,您应该反对 "\|"
,而不是 "|"
。
此外,如果您重复执行此操作,请改用 Pattern
:
private static final Pattern PIPE = Pattern.compile("\|");
// ...
final String[] tokens = PIPE.split(yourInput);
我试图阅读有关正则表达式和转义的内容,但没有成功。
我有一个看起来像这样的字符串:
String s = "4/18/2015|Planned|Linux|Maintenance";
我想用分隔符“|”拆分它:
String[] tokens = s.split("|");
我期望的正确结果是
tokens[0] is "4/18/2015",
tokens[1] is "Planned",
tokens[2] is "Linux",
token[3] is "Maintenance",
然而它给了我一些像这样的奇怪结果:
tokens[0] is null
tokens[1] is 4
tokens[2] is /
and tokens[3] is 1
我猜这是因为日期中的斜杠“/”。我尝试搜索许多现有问题并尝试了建议的方法,但无济于事。
只需使用
split("\x7C")
或
split("\|")
针对管道字符“|”进行拆分时需要转义或使用相应的 unicode 值。
转义竖线字符:
s.split("\|");
因为正则表达式中的管道符号表示或,所以要转义它你需要 \|
但在正则表达式中你也需要转义 \
所以 \|
可以工作。
或按照 mushfek0001 的建议:
split("\x7C")
大多数正则表达式方言中的竖线是交替的元字符;基本上你要求正则表达式引擎在这里做的是:"split against the empty string or... the empty string".
而且,呃,这意味着你每次都可能会变成空的,除非正则表达式引擎不是傻瓜,如果在拆分中检测到空匹配,引擎将在再次拆分之前前进一个字符.. . 因此你的结果(不确定为什么第一个元素是 null
而不是空字符串)。
因此,您应该反对 "\|"
,而不是 "|"
。
此外,如果您重复执行此操作,请改用 Pattern
:
private static final Pattern PIPE = Pattern.compile("\|");
// ...
final String[] tokens = PIPE.split(yourInput);