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();
}
}
答案 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
内容对你的目的来说是过度的。