Java-区分字符串
java中有数字通配符吗?我正在打开一个文件并查看数据列表,我需要区分以“m”开头的三条信息。但是,其中一个后面有数字,另外两个后面有字母。我想知道是否有办法检查字母后面是否有带通配符的数字。我相信你可以用ASCII来实现这一点,但我也不确定如何执行 编辑:我仍然有问题,所以这里是我的代码Java-区分字符串,java,Java,java中有数字通配符吗?我正在打开一个文件并查看数据列表,我需要区分以“m”开头的三条信息。但是,其中一个后面有数字,另外两个后面有字母。我想知道是否有办法检查字母后面是否有带通配符的数字。我相信你可以用ASCII来实现这一点,但我也不确定如何执行 编辑:我仍然有问题,所以这里是我的代码 import java.io.*; import java.util.*; import java.util.regex.*; public class addSevTest{ public sta
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]”
您想匹配什么?因为这将匹配文字字符。
完全有效,非常感谢我的好先生。我得更努力地学习正则表达式。