现在有一个字符串: [“1002201504303120”,”1002201504253100”,”1002201504213080”],提取数字串到List中
import java.util.*;
public class Test1
{
public static void main(String[] args)
{
String str = "[\"1002201504303120\",\"1002201504253100\",\"1002201504213080\"]";
String[] s = str.split("\"");
List<String> list = new ArrayList<String>();
for(int i = 0; i < s.length ; i ++){
if(s[i].length() > 1){
list.add(s[i]);
}
}
System.out.println(list);
}
}
上述解法很简单,思想也很简单,接下来看看正则表达式处理。
import java.util.*;
public class Test1
{
public static void main(String[] args)
{
String str = "[\"1002201504303120\",\"1002201504253100\",\"1002201504213080\"]";
String[] s = str.split("[^0-9]");
List<String> list = new ArrayList<String>();
for(int i = 0; i < s.length ; i ++){
if(s[i].length() != 0){
list.add(s[i]);
}
}
System.out.println(list);
}
}
通过上述例子,可知String的split方法支持正则表达式
public static void main(String[] args) {
String str = "[\"1002201504303120\",\"1002201504253100\",\"1002201504213080\"]";
Pattern p = Pattern.compile("\\d{16}");
Matcher matcher = p.matcher(str);
List<String> list = new ArrayList<>();
while(matcher.find()){
String strVal = matcher.group();
list.add(strVal);
}
if(!list.isEmpty()){
for (String s : list) {
System.out.println(s);
}
}
}
java.util.regex:用于匹配字符序列与正则表达式指定模式的包。包含两个类,Matcher和Pattern。
Matcher:通过解释 Pattern 对 character sequence 执行匹配操作的引擎。
Pattern:正则表达式的编译表示形式。
PatternSyntaxException : 抛出未经检查的异常,表明正则表达式模式中的语法错误。
Pattern:正则表达式的编译表示形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。典型的调用顺序:
Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();
通过解释 Pattern 对 character sequence 执行匹配操作的引擎。
通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
1、matches 方法尝试将整个输入序列与该模式匹配。
2、lookingAt 尝试将输入序列从头开始与该模式匹配。
3、find 方法扫描输入序列以查找与该模式匹配的下一个子序列。
原文地址:http://blog.csdn.net/havedream_one/article/details/45628417