2010-09-09 2 views
1

У меня есть строка, которая выглядит как этотПолучение номера из списка разделенных

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.

Can Pattern.compile() для этого использовать?

ответ

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

params должен быть строкой []. И вам, возможно, придется избегать |, так как split принимает регулярное выражение. – gpeche

+0

@gpeche Вы абсолютно правы. Я только что исправил свой ответ. – mgamer

+0

Да, я тоже могу это сделать. Спасибо за помощь .. это работает. На самом деле я пытался с шаблонами. Но это работает. – jimmy

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 
     } 
    } 
} 

Однако, я думаю, что Майкл является правильным: его решение лучше!

Удачи ...

Смежные вопросы