Java 防止特定字符串拆分
我想拆分这些字符串,除了支出:1和其他“支出” 我的txt文件:Java 防止特定字符串拆分,java,Java,我想拆分这些字符串,除了支出:1和其他“支出” 我的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 对于split,我编
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
对于split,我编写了以下代码:
for (String token : line.split(":")) { // Splitting each line with ':'
if (!token.trim().equals(" day")) { // Adding token to list conditionally.
list.add(token);
}
}
有没有什么办法可以防止“花费”被拆分。我的意思是拆分应该只在每一行的日期进行。要在冒号上拆分,除非冒号前面有“expense”
:
line.split((?我不确定这是否是您想要的,但您可以在拆分中使用lookback:
String s = "date : 1\nday : monday\nspend : 4\n";
String[] r = s.split("(?<!spend(\\s+)?):");
System.out.println(Arrays.toString(r));
是否希望拆分发生在冒号上,除非前面有“花费”?是的,conatins花费的字符串行:…不能拆分。请在不带空格的情况下尝试:…花费:4
@Bohemian,很容易修复-查看更新的答案。在“线程”main中给出错误…异常"java.util.regex.PatternSyntaxException:命名捕获组缺少尾随“>”。我测试了它,它工作正常。你确定你正确复制了我的代码吗?如果你忽略了!
,你看到的错误就会发生-你一定没有正确复制我的代码。尝试直接复制粘贴到你的代码中。我是这样做的:f或者(字符串标记:line.split((?是-这是正确的。为了确保这一点,我将您的代码复制到了我的IDE中,并且工作正常。这里还发生了其他一些事情。可能您还没有重建代码?您的IDE中是否启用了“自动重建”?我正在使用eclipse并已完成。好的,如果它在您的IDE中工作,那么我将创建新的可能是软件问题。
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
]