我有一个数据文件,它是一个名字后跟“*****”的列表,然后继续整数。如何扫描名称然后打破星号,然后扫描整数?
答案 0 :(得分:2)
这个问题可能有所帮助:Splitting up data file in Java Scanner
使用Scanner.useDelimiter()方法,输入" *****"作为分隔符,例如:
sc.useDelimiter("*****");
或强>
替代方案:
答案 1 :(得分:0)
下面的代码应该适合你
Scanner scanner = new Scanner(<INPUT_STR>).useDelimiter("[*****]");
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
// For Integer
} else {
// For String
}
}
答案 2 :(得分:0)
虽然这似乎是一件单调乏味的事情,但我认为这样可以解决问题,而不用担心分裂是否会返回任何东西,而且会超出范围。
final String x = "abc****12354";
final Pattern p = Pattern.compile("[A-Z]*[a-z]*\\*{4}");
final Matcher m = p.matcher(x);
while (m.find()) {
System.out.println(m.group());
}
final Pattern p1 = Pattern.compile("\\*{4}[0-9]*");
final Matcher m1 = p1.matcher(x);
while (m1.find()) {
System.out.println(m1.group());
}
第一个模式匹配减去最后4个星(可以是子字符串输出),第二个模式匹配减去前4个星(也可以删除)将给出请求字段。