我需要拆分从外部源传入我的应用程序的字符串。这个String用插入符号String[] barcodeFields = contents.split("\\^+");
分隔,这是我如何将字符串拆分成数组
""
除了一些传入的字段是空的并且我需要考虑它们之外,这种方法很好。我需要将"null"
或"empty"
或"empty"
插入任何缺失的字段。
缺少的字段有连续的分隔符。如何将Java字符串拆分为数组并插入{{1}}之类的字符串作为具有连续分隔符的占位符?
答案 0 :(得分:3)
String.split
会留下一个空字符串(""
),它会遇到连续的分隔符。如果您想将其替换为"empty"
,则必须自行填写:
String[] split = barcodeFields.split("\\^");
for (int i = 0; i < split.length; ++i) {
if (split[i].length() == 0) {
split[i] = "empty";
}
}
答案 1 :(得分:2)
使用^+
表示一个(或多个连续)克拉字符。删除加号
String[] barcodeFields = contents.split("\\^");
它不会吃空字段。对于空字段,您将获得(您的请求)""
。
答案 2 :(得分:0)
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
答案 3 :(得分:-1)
[blah, , bladiblah, moarblah]
中的以下结果:
String test = "blah^^bladiblah^moarblah";
System.out.println(Arrays.toString(test.split("\\^")));
^^
替换为""
,空字符串