由于是新手,所以对很多API都不太清楚,今天老大让我从一个字符串中获取符合条件的,并且取出来。
下面是我第一次写的代码
public class ParseNumber {
public static void main(String[] args) {
new ParseNumber().go();
}
private void go(){
String input = "失去联系【05922629809】【啦啦啦】【059-22629809】【啦啦啦】【05922629809】";
System.out.println(parseStr(input));
}
/**把要解析的字符串传进去并进行解析*/
private String parseStr(String disStr) {
String phoneStr = " ";
if(disStr == null || "null".equals(disStr) || "NULL".equals(disStr)){
return phoneStr;
}
if(disStr.contains("【") && disStr.contains("】")){
List<String> resultList = new ArrayList<String>();
resultList = parseAllStr(disStr, 0, 0,resultList);
phoneStr = getNum(resultList);
}
return phoneStr;
}
/**便利解析结果集,并且把第一个符合电话号码的串取出来*/
private String getNum(List<String> resultList) {
for (int i = 0; i < resultList.size(); i++) {
String regex = "\\d+";
String currStr = resultList.get(i);
if (currStr.matches(regex)) {
return currStr;
}
}
return " ";
}
/**用递归的方法编类所有被【】包围的串*/
private List<String> parseAllStr(String disStr,int beginIndex,int endIndex,List<String> resultList){
beginIndex = disStr.indexOf("【", beginIndex);
endIndex = disStr.indexOf("】",endIndex);
if(beginIndex>=0&&endIndex>=0){
resultList.add(disStr.substring(beginIndex+1, endIndex));
parseAllStr(disStr, beginIndex+1, endIndex+1,resultList);
}
return resultList;
}
}
很麻烦,当时是满足要求了,然后老大看了一下说可能太麻烦了,后来我就去查了一查资料,并且发现有下面这样的API,这是我第二次写的代码
public class ParseNumber1 {
public static void main(String[] args) {
String s1 ="失去联系【05922629809】【啦啦啦】【059-22629809】【啦啦啦】【05922629809】";
Pattern pattern=Pattern.compile("【\\d+】|【\\d+-\\d+】");
Matcher matcher = pattern.matcher(s1);
if (matcher.find()){
//你的代码
int beginIndex = matcher.start();
int endInDex = matcher.end();
System.out.println(beginIndex);
System.out.println(endInDex);
System.out.println(s1.substring(beginIndex+1, endInDex-1));
}
}
}
我草草草,这么简单?就搞定了,所以在这里做一个笔记,原谅我是小白。。。。。。。。