"Undergraduate CT275.P648 R53 2008"
,
"Science Center QR. 123 G45 2001"
,
"Grainger 134 P 123 1995"
。
我试图通过忽略库名来从输入字符串中提取电话号码。除了这是棘手的,因为库有大量的库/不同的昵称。例如,本科生有时被认为是UGL或本科生...此外,电话号码可以以数字,字母或2的组合开头。
使用正则表达式有一种简单的方法吗?我对正则表达式没有太多经验,但我听说它对这样的事情有用。否则,我可能必须检查所有库/昵称列表中的字符串,这将是非常繁琐和耗时的。
答案 0 :(得分:0)
一些简单的代码可以让你接近你想要的地方就是简单地提取数字:
String str1= "Undergraduate CT275.P648 R53 2008";
String str2= "Science Center QR. 123 G45 2001";
String str3= "Grainger 134 P 123 1995";
str1 = str1.trim();
str1 = str1.replaceAll("[a-zA-Z. ]+", "");
str2 = str2.trim();
str2 = str2.replaceAll("[a-zA-Z. ]+", "");
str3 = str3.trim();
str3 = str3.replaceAll("[a-zA-Z. ]+", "");
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
输出:
275648532008
123452001
1341231995
另一种方法是编写一个for循环来从输入中提取数字。
正如上面评论中提到的,如果你知道你想要提取的内容(例如,有一个所有前缀列表UGL = Undergrad lab)你会匹配(UGL | GL | SL)(\ d +)制作2个捕获组,第一个捕获第一组括号中的字母(您的前缀),然后\ d +将匹配第二个捕获组中的所有数字,直到非数字字符。
有很多方法可以解决这个问题,但我认为在有人可以帮助你之前你需要更好地定义它。