java - useDelimiter() 中的重复值
问题描述
例如,我有这个字符串
String input = "1 2 fish1 3 4 fish2 5 6 fish3 7 8 fish1 9 10 fish2 11 12...";
pairs1 = new Scanner(file.txt).useDelimiter("fish1");
String inputPairs1=pairs1.next().trim();
System.out.println(inputPairs1);
pairs2 = new Scanner(pairs1.next()).useDelimiter("fish2");
String inputPairs2=pairs2.next().trim();
System.out.println(inputPairs2);
pairs3 = new Scanner(pairs2.next()).useDelimiter("fish3");
String inputPairs3=pairs2.next().trim();
System.out.println(inputPairs3);
pairs4 = new Scanner(pairs3.next()).useDelimiter("fish1");
String inputPairs4=pairs4.next().trim();
System.out.println(inputPairs4);
pairs5 = new Scanner(pairs4.next()).useDelimiter("fish2");
String inputPairs5=pairs5.next().trim();
System.out.println(inputPairs5);
输出:
1 2
3 4
5 6
第二条fish1后数据读取中断
预期输出:
1 2
3 4
5 6
7 8
9 10
如果分隔符中的值重复,我想读取数据。正则表达式是一个不错的选择吗?
解决方案
您可以使用java.util.regex.Pattern
和 replaceFirst 方法:
String input = "1 2 fish1 1 2 fish2 1 2 fish3 1 2 fish1 1 2 fish2 1 2...";
String s = input.replaceFirst(Pattern.quote("fish1"), "");
推荐阅读
- nativescript - UIScrollView 与 nativescript vuejs 的淡入淡出效果
- python - 为 Bokeh 添加新功能
- events - 煎茶建筑师 3.2。为什么按钮会发送 2 个点击事件?
- java - 返回匹配数组值的索引总和
- c++ - c ++搜索特定文件(text.ini)并列出结果,包括列表框中的路径
- python - SyntaxError:使用子进程运行 C 可执行文件时的非 ASCII 字符“\xff”
- jenkins - 使用 Groovy 在 Jenkins 中创建文件夹
- c# - 计算货币数量的代码认为它很古怪。(意外的小数不断出现)
- python - Python在追加到空数组时改变熊猫DF数据
- angular - Jasmine:Angular,“未采用其他路径”,但两个测试用例都通过了吗?