使用tokenizer时验证null字符串

时间:2017-07-11 06:58:32

标签: java stringtokenizer

我有一个像这样的字符串:String sample = "a|b||d|e";
我正在尝试用tokenizer

拆分字符串
StringTokenizer tokenizer = new StringTokenizer(sample, "|");
String a = tokenizer.nextToken();
String b = tokenizer.nextToken();
String c = tokenizer.nextToken();
String d = tokenizer.nextToken();

当我使用上面的代码时,字符串变量c被赋值为d
StringTokenizer未将null值初始化为String c

如果是-,我们如何验证和分配默认值null

1 个答案:

答案 0 :(得分:2)

正如其他人所说,你可以在管道上使用String#split(),这将返回空匹配的条目。在下面的代码片段中,我使用流将空条目映射到每个所需输出的破折号。

String sample = "a|b||d|e";
String[] parts = sample.split("\\|");
List<String> list = Arrays.asList(parts).stream()
    .map(o -> {
        if (o.equals("")) {
            return "-";
        } else {
            return o;
        }
    }).collect(Collectors.toList());

for (String part : list) {
   System.out.println(part);
}

<强>输出:

a
b
-
d
e

在这里演示:

Rextester