我有一个像这样的字符串: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
?
答案 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
在这里演示: