【发布时间】:2017-06-04 23:25:20
【问题描述】:
java.util.Scanner.useDelimiter() 和 Scanner.skip() 有什么区别?例如,我将这些字符串格式化为如下所示:
String line1 = "0---20.000:\t\t \t12%";
String line2 = "0--20.000:\t 12%";
String line3 = "0-20.000: \t \t12%";
String error = "0-: \t\t12%";
我需要这个输出:
0
20.000
12
我应该使用一个扫描器和一个对所有三个字符串都有效的模式,并且我需要控制标记为三个,否则抛出异常。
我可以使用两种 Scanner 方法获得此输出吗?
我应该使用哪种正则表达式模式?
它必须对其他数字也有效。
编辑:这是我的尝试:
package scanners;
import java.util.Scanner;
public class ScannerTry {
public static void main(String[] args) {
String line = "0--20.000: 12%";
Scanner scan = new Scanner(line);
scan.useDelimiter("[-*:*\t*%]*");
while (scan.hasNext()){
System.out.println(scan.next());
}
scan.close();
}
}
但是输出是:
0
2
0
.
0
0
0
1
2
【问题讨论】:
-
你的问题不清楚。 SO 是这样一种网站,当您在尝试做某事时遇到问题时,社区会尝试为您提供提示或解决方案。但是,至少你必须尝试。
-
回答第一个问题:
skip说“我希望这个模式现在出现在输入中,请跳过它”。useDelimiter说“当我以后使用next()或nextInt()或任何其他next方法时,这是我希望出现在'令牌'之间的模式。” -
哦,我今天尝试了多少!关键是我没有得到解决方案。我会尝试编辑。
标签: java regex java.util.scanner delimiter