我想拆分这些字符串,除了花费:1和其他"花费" s;
我的txt文件:
date : 1
day : monday
spend : 4
date : 2
day : tuesday
spend : 1
我通过搜索检索了这些内容。我给输入输入:1,它给出了
date : 1
day : monday
spend: 2
但我遇到了问题,当我输入这样的输入时,它也会给我这样的输出,例如输入:1
output:
date :1
day : monday
spend:2
spend:1
for split我写了这段代码:
for (String token : line.split(":")) { // Splitting each line with ':'
if (!token.trim().equals(" day")) { // Adding token to list conditionally.
list.add(token);
}
}
有什么想法可以阻止"花费"从分裂。我的意思是分裂只发生在每一行的日期和日期。
答案 0 :(得分:2)
要在冒号上拆分,除了,当冒号前面有"spend"
时:
line.split("(?<!spend)\\s*:\\s*")
答案 1 :(得分:0)
嗯,我不确定这是否是您想要的,但您可以在分割中使用lookbehind:
String s = "date : 1\nday : monday\nspend : 4\n";
String[] r = s.split("(?<!spend(\\s+)?):");
System.out.println(Arrays.toString(r));
这会产生:
[date , 1
day , monday
spend : 4
]