有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java只是文件中的数字

Scanner sc = new Scanner(System.in);
System.out.println("Enter file name");
String fileName = sc.next();
String line;
Pattern p = Pattern.compile("\\d+");
Scanner s = new Scanner (new File(fileName));
while(s.hasNextLine()){
    line = s.next();
    Matcher m = p.matcher(line);
    while(m.find()){
        System.out.println(m.group());
    }
}

文件看起来像这样

---------------
   aaaa   bbb
//another comment
// a d 3 5

2 4 6 
2 a 6
10 10

30 20
nbnb
------------

我想让它打印出每行的数字 例如:

 2 4 6
 2 6
 10 10
 30 20

它会打印出每个数字,包括注释中的数字。它还在每行上打印一个数字。我希望它像示例中那样打印,并跳过注释


共 (1) 个答案

  1. # 1 楼答案

    我猜你是想用反斜杠:

    Pattern p = pattern.compile("\\d+");
    

    从你写的那句话开始:

    "//d+"
    

    查找两个前斜杠,后跟至少一个字母d的实例

    以下代码似乎以您想要的方式运行:

    public static void main (String[] args) throws java.lang.Exception
    {
    String s[]={"some text 123 and 234 some 456 numbers", "just text", "123 234"};
    Pattern p = Pattern.compile("\\d+");
    for(String ss: s) {
        Matcher m = p.matcher(ss);
        int flag = 0;
        while(m.find()){
            System.out.print(m.group() + " ");
            flag = 1;
            }
        if(flag == 1) System.out.println();
        }
    }
    

    输出:

    123 234 456 
    123 234 
    

    注意——不要对每个数字使用println(),因为它会生成换行符。相反,我在while循环之前设置了一个标志;如果我离开循环并设置了标志,这意味着字符串中有数字,我需要换行符(^{)。否则,就不需要换行符(因此纯文本行不会产生空白)

    我使用的是一个在线Java编译器,因此无法测试代码中的文件I/O部分——但我认为这应该能帮助您