扫描2种不同的数据类型Java

时间:2016-02-09 03:40:46

标签: java java.util.scanner

我有一个数据文件,它是一个名字后跟“*****”的列表,然后继续整数。如何扫描名称然后打破星号,然后扫描整数?

3 个答案:

答案 0 :(得分:2)

这个问题可能有所帮助:Splitting up data file in Java Scanner

使用Scanner.useDelimiter()方法,输入" *****"作为分隔符,例如:

sc.useDelimiter("*****");

替代方案:

  1. 阅读整个字符串
  2. 使用String.split()
  3. 拆分字符串
  4. 结果String数组的索引0包含名称,索引1包含整数。

答案 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个星(也可以删除)将给出请求字段。