Java 只是文件中的数字

Java 只是文件中的数字,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.nex

文件看起来像这样

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());
    }
}
我想让它打印出每行的数字 例如:


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

我怀疑你想用反斜杠:

 2 4 6
 2 6
 10 10
 30 20
从你写的那句话开始:

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();
    }
}
注意-不要对每个数字使用
println()
,因为它会生成换行符。相反,我在
while
循环之前设置了一个标志;如果我离开循环并设置了标志,这意味着字符串中有数字,我需要换行(
System.out.println();
)。否则,不需要换行符(因此纯文本行不会产生空白)


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

您可以在一行中完成这一切:

123 234 456 
123 234 

这将用空格替换所有非数字序列(并删除结尾的空白)。

您也可以发布文件内容吗?我看到您将代码更改为在正则表达式中使用反斜杠。这有什么区别吗?是因为在网站中输入代码时出错(你没有复制粘贴?@Floris没有,我没有复制粘贴。我只是打错了。它显示数字,但不忽略注释
123 234 456 
123 234 
System.out.println(s.replaceAll("\\D+", " ").trim());