[英]Java Split String Consecutive Delimiters
只要您使用正确的正则表达式, String.split
就会在遇到连续分隔符的地方留下一个空字符串 ( ""
)。 如果你想用"empty"
替换它,你必须自己这样做:
String[] split = barcodeFields.split("\\^");
for (int i = 0; i < split.length; ++i) {
if (split[i].length() == 0) {
split[i] = "empty";
}
}
mureinik的答案非常接近,但在一个重要的边缘情况下是错误的:当尾随定界符在末尾时。 要说明这一点,您必须使用:
contents.split("\\^", -1)
例如看下面的代码:
final String line = "alpha ^beta ^^^";
List<String> fieldsA = Arrays.asList(line.split("\\^"));
List<String> fieldsB = Arrays.asList(line.split("\\^", -1));
System.out.printf("# of fieldsA is: %d\n", fieldsA.size());
System.out.printf("# of fieldsB is: %d\n", fieldsB.size());
上面的打印:
# of fieldsA is: 2
# of fieldsB is: 5
使用^+
表示一个(或多个连续)克拉字符。 去掉加号
String[] barcodeFields = contents.split("\\^");
它不会吃空的田地。 对于空字段,您将获得(您要求的) ""
。
[blah, , bladiblah, moarblah]
如下:
String test = "blah^^bladiblah^moarblah";
System.out.println(Arrays.toString(test.split("\\^")));
其中^^
被替换为""
,空字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.