Java - 区分字符串

时间:2013-09-05 14:41:24

标签: java

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();
}

}

1 个答案:

答案 0 :(得分: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内容对你的目的来说是过度的。