繁体   English   中英

Java拆分字符串连续分隔符

[英]Java Split String Consecutive Delimiters

我需要拆分从外部源传入我的应用程序的字符串。 这个字符串用插入符号"^"分隔,这里是我如何将字符串拆分成一个数组

String[] barcodeFields = contents.split("\\^+");

在此处输入图片说明

这工作正常,除了一些传入的字段是空的,我需要考虑它们。 我需要在任何缺失的字段中插入"""null""empty"

并且缺少的字段具有连续的分隔符。 如何将 Java 字符串拆分为数组并插入诸如"empty"类的字符串作为有连续分隔符的占位符?

只要您使用正确的正则表达式, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM