2015-03-22 4 views
0

Я пытаюсь сделать что-то вроде этого:Преобразование и извлечение чисел из строки

ввода: строка как (номера являются случайными):

"<12, 3>, <4, 5>, <23, 5>, <33, 56>" 

Вывод: массив целых чисел, как этот

[12, 3, 4, 5, 23, 5, 33, 56] 

Я пробовал использовать некоторые грамматики и некоторые расколы, но я всегда заканчиваю строкой или символами.

+0

Есть ли '' 'в строке? – BlackHatSamurai

+0

Да, строка только в этом формате, только цифры могут меняться – nescionomen93

+0

Почему бы вам просто не удалить символы «<" and ">» и поделить их на «,»? –

ответ

0

Это должно делать то, что вы хотите сделать:

package split; 

public class Main { 

    public static void main(String[] args){ 

     String mString = "<12,3>,<4,5>,<23,5>,<33,56>"; 
     mString = mString.replace("<", ""); 
     mString = mString.replace(">", ""); 
     String[] stringArray = mString.split(","); 

     int[] intArray = new int[stringArray.length]; 
     int index = 0; 
     for(String mS : stringArray){ 
      intArray[index] = Integer.parseInt(mS); 
      index++; 
     } 

     for(int i : intArray){ 
      System.out.println(i); 
     } 
    } 
} 

Для изменения String Ань int вы используете Integer.parseIn("your String");.

+0

Идеальный мужчина, вот что мне нужно. Спасибо :) – nescionomen93

+0

Добро пожаловать. Я рад, что смогу помочь. – BlackHatSamurai

0

Иногда трюк с регулярными выражениями не пытается совместить полный формат вещи, которую вы пытаетесь разобрать, а вместо этого просто для поиска вещей, которые вы ищете.

В вашем случае, поскольку вы хотите сгладить список чисел, все, что вам нужно искать, это последовательность чисел. Так что это легко сделать.

List<Integer> findNumbers(String s) { 
    List<Integer> result = new ArrayList<Integer>(); 
    Pattern pattern = Pattern.compile("\\d+"); 
    Matcher matcher = pattern.matcher(s); 
    while (matcher.find()) { 
     result.add(Integer.parseInt(matcher.group())); 
    } 
    return result; 
} 
Смежные вопросы