猿问

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

第二条鱼1后数据读取中断


预期输出:


1 2


3 4


5 6


7 8


9 10

如果分隔符中的值重复,我想读取数据。正则表达式是一个不错的选择吗?


胡子哥哥
浏览 126回答 2
2回答

Cats萌萌

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

慕田峪7331174

您(大概)在给定的文本上创建一个Scanner调用pairs1,并调用其next()方法两次。第一次调用返回"1 2 " (打印值)第二次调用返回" 3 4 fish2 5 6 fish3 7 8 "第三次调用将返回" 9 10 fish2 11 12..."是您曾经调用过它,但您没有调用过。pairs2使用文本创建扫描器" 3 4 fish2 5 6 fish3 7 8 "第一次调用返回" 3 4 " (打印值)第二次调用返回" 5 6 fish3 7 8 "第三次调用抛出NoSuchElementException你为什么对此感到惊讶?或者是你打算String inputPairs3 = pairs2.next().trim();打电话pairs3,不是pairs2?好的,让我们假设您已经完成并修复了该问题,因此没有第三次调用pairs2.扫描器pairs3是用文本创建的" 5 6 fish3 7 8 "第一次调用返回" 5 6 " (打印值)第二次调用返回" 7 8 "扫描器pairs4是用文本创建的" 7 8 "第一次调用返回" 7 8 " (打印值)第二次调用抛出NoSuchElementException如果您只是想要值对,并且不关心分隔符是fish1, fish2, 或fish3,只需将其拆分,即为所有这些设置分隔符(分隔符是正则表达式):String input = "1 2 fish1 3 4 fish2 5 6 fish3 7 8 fish1 9 10 fish2 11 12...";try (@SuppressWarnings("resource") Scanner sc = new Scanner(input).useDelimiter("fish[123]")) {    while (sc.hasNext()) {        String inputPairs = sc.next().trim();        System.out.println(inputPairs);    }}输出1 23 45 67 89 1011 12...
随时随地看视频慕课网APP

相关分类

Java
我要回答