我必须做这样的事情:对于名字字段,如果字段由两个或多个单词组成,如果最后一个单词由以下之一组成,则将最后一个单词删除到后缀字段中:II,III, IV,V,VI,VII,VIII,ESQ,JR,SR。我试过用java模式匹配我的代码是:`String fName =" shaik II .SR ,;
String suffix=null;
String [] genSuffixFname=fName.split(" ");
if(genSuffixFname.length>=2){
String line=genSuffixFname[genSuffixFname.length-1];
String pattern="( II| III| IV| V| VI| VII| VIII| ESQ|.JR|.SR)";
Pattern r =Pattern.compile(pattern);
Matcher m=r.matcher(line);
//System.out.println(m.find());
if(m.find()){
suffix=genSuffixFname[genSuffixFname.length-1];
}
}`
我的后缀输出为null。要做的任何修改或任何其他方式我都可以得到这个>
答案 0 :(得分:0)
尝试从模式中删除空格: String pattern =“(II | III | IV | V | VI | VII | VIII | ESQ | .JR | .SR)”;
答案 1 :(得分:0)
如果要测试给定字符串是否存在于另一个字符串中,可以使用String#contains(anotherString)
或者使用此代码,它通过给定的模式找到所有匹配项:
String fName = "shaik II .SR IV";
String[] genSuffixFname = fName.split("\\s+");
System.out.println(genSuffixFname.length);
if (genSuffixFname.length >= 2) {
String line = fName;
String pattern = "(II)|(III)|(IV)|(V)|(VI)|"
+ "(VII)|(VIII)|(ESQ)|(.JR)|(.SR)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
while (m.find()) {
System.out.println(m.group());
}
}`
有关Java中正则表达式的更多信息:Read here