Java-区分字符串

Java-区分字符串,java,Java,java中有数字通配符吗?我正在打开一个文件并查看数据列表,我需要区分以“m”开头的三条信息。但是,其中一个后面有数字,另外两个后面有字母。我想知道是否有办法检查字母后面是否有带通配符的数字。我相信你可以用ASCII来实现这一点,但我也不确定如何执行 编辑:我仍然有问题,所以这里是我的代码 import java.io.*; import java.util.*; import java.util.regex.*; public class addSevTest{ public sta

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();
}
import java.io.*;
导入java.util.*;
导入java.util.regex.*;
公共类测试{
公共静态void main(字符串[]args)引发IOException{
FileReader fr=新的FileReader(“output6.txt”);
BufferedReader br=新的BufferedReader(fr);
弦线;
Pattern=Pattern.compile(br.readLine());
Matcher Matcher=pattern.Matcher(br.readLine());
列表=新的ArrayList();
而((line=br.readLine())!=null){
if(line.contains(“100%”)| | | line.contains(“70%”)| | | | matcher.find(“[.][1-9]”){
列表。添加(行);
列表。添加(“2”);
列表。添加(“\n”);
//System.out.println('使用字符串匹配方法:'+line.matches('.M'));
}else if(行startsWith(“MDRALM”)){
列表。添加(行);
列表。添加(“3”);
列表。添加(“\n”);
}else if(line.startsWith(“SOL”)| line.startsWith(“I/O”)| line.startsWith(“AH”)| line.startsWith(“LT”)){
继续;
}否则{
列表。添加(行);
列表。添加(“1”);
列表。添加(“\n”);
}
}
/*而((line=br.readLine())!=null){
如果(第行包含(“CP”)){
列表。添加(行);
列表。添加(“\n”);
}
}*/
br.close();
FileWriter writer=newfilewriter(“addSevTest_O.txt”);
for(字符串str:list){
writer.write(str);
}
writer.close();
}

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

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

编辑

在添加的代码中,尝试替换以下内容:

    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]与数字匹配,
+
表示一个或多个数字
*
表示数字后面的零个或多个附加字符也将匹配


您这里的
模式
/
匹配器
对于您的目的来说是多余的。

您在寻找正则表达式吗。请参阅的API文档。您正在寻找正则表达式。您可以在正则表达式中使用
模式
匹配器
类来计算字符串。我们都提到过正则表达式了吗?:)正则表达式本身就是一种语言。无论您是在编写ruby、javascript、java,甚至是C。。正则表达式,而不同语言之间的差异很小。。。它是语言的核心,是一种语言本身。玩得开心。@CinCity将代码添加到原始问题中作为编辑,我们将look@CinCity首先,pattern.compile应该使用一个正则表达式字符串。其次,在这里使用
pattern
Matcher
可能有点过头了。。。一个简单的
string.matches(regex)
可能会满足您的需要,比如
string.toLowerCase().matches(“M[0-9].*)
可能会做一些小动作,而这个regex-
“[.][1-9]”
您想匹配什么?因为这将匹配文字字符
完全有效,非常感谢我的好先生。我得更努力地学习正则表达式。