首页 > 解决方案 > 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

解决方案


您可以使用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"), "");

推荐阅读