防止特定字符串分裂

时间:2014-03-22 12:07:09

标签: java

我想拆分这些字符串,除了花费: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);
                        }
                    } 

有什么想法可以阻止"花费"从分裂。我的意思是分裂只发生在每一行的日期和日期。

2 个答案:

答案 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
]