2

java中是否有数字通配符?我正在打开一个文件并查看一个数据列表,我需要区分以“M”开头的三条信息。但是,其中一个是直接跟在它后面的数字,而另外两个是跟在后面的字母。我想知道是否有办法检查字母后面是否有一个带有通配符的数字。我相信你可以用 ASCII 来做到这一点,但我也不确定如何执行它。

编辑:我仍然有问题,所以这是我的代码。

import java.io.*;
import java.util.*;
import java.util.regex.*;

public class addSevTest{
    public static void main(String[] args) throws IOException{
        FileReader fr = new FileReader("output6.txt");
        BufferedReader br = new BufferedReader(fr);
        String line;
        Pattern pattern = Pattern.compile(br.readLine());
        Matcher matcher = pattern.matcher(br.readLine());

    List<String> list = new ArrayList<String>();
    while ((line = br.readLine()) != null){
        if(line.contains("100%") || line.contains("70%") || matcher.find("[.][1-9]")){
            list.add(line);
            list.add("     2");
            list.add("\n");
            //System.out.println('Using String matches method: '+line.matches('.M'));
        }else if(line.startsWith("MDRALM")){
            list.add(line);
            list.add("     3");
            list.add("\n");
        }else if(line.startsWith("SOL") || line.startsWith("I/O") || line.startsWith("AH") || line.startsWith("LT")){
            continue;
        }else{
            list.add(line);
            list.add("     1");
            list.add("\n");
        }
    }

    /*while ((line = br.readLine()) != null){
        if(line.contains("CP")){
            list.add(line);
            list.add("\n");
        }
    }*/
    br.close();

    FileWriter writer = new FileWriter("addSevTest_O.txt"); 
        for(String str: list){
            writer.write(str);
        }
        writer.close();
}

}

4

1 回答 1

5

你最好使用一些简单的正则表达式。
我找到了一些基本教程,您可以在此处浏览基础知识:

还有一些工具可以帮助您完成旅程:

编辑

在您添加的代码中,尝试替换它:

    if(line.contains("100%") || line.contains("70%") || matcher.find("[.][1-9]"))

有了这个:

    if(line.contains("100%") || line.contains("70%") || line.matches("M[1-9]+.*"))

匹配该M行的第一个字母。 [1-9]匹配数字,+含义为一个或多个。 .*表示数字后面的零个或多个附加字符也将匹配。

你在这里得到的Pattern/Matcher东西对于你的目的来说太过分了。

于 2013-09-05T14:43:43.760 回答