从单独的列表中获取数字

时间:2010-09-09 10:37:25

标签: java regex

我有一个看起来像这样的字符串

String read = "1130:5813|1293:5803|1300:5755|1187:5731|"

如您所见,有4对整数值。

我想在列表中添加类似这样的值

a = 1130
b = 5813

groupIt pair = new groupIt(a,b);
List<groupIt> group  = new ArrayList<groupIt>();
group.add(pair);

如何为4对String执行此操作。

可以Pattern.compile()使用吗?

2 个答案:

答案 0 :(得分:3)

为什么不使用

String[] tokens = read.split("\\|");
for (String token : tokens) {
   String[] params = token.split(":");
   Integer a = Integer.parseInt(params[0]);
   Integer b = Integer.parseInt(params[1]);

   // ...

}

答案 1 :(得分:0)

只是好好衡量,这是你的正则表达式:

public class RegexClass {
    private static final Pattern PATTERN = Pattern.compile("(\\d{4}):(\\d{4})\\|");

    public void parse() {
        String text = "1130:5813|1293:5803|1300:5755|1187:5731|";
        Matcher matcher = PATTERN.matcher(text);
        int one = 0;
        int two = 0;
        while(matcher.find()) {
           one = Integer.parseInt(matcher.group(1));
           two = Integer.parseInt(matcher.group(2));

           // Do something with them here
        }
    }
}

但是,我认为迈克尔是正确的:他的解决方案更好!

祝你好运......