Java разбирает строку вроде "0: ADD (10)" - PullRequest
1 голос
/ 14 декабря 2010

у меня есть строковый массив, подобный этому {"0: ADD (10)", "1: ADD (20)"}, как я могу проанализировать это и получить значение '10', '20' из этой строки,

Сценарий: я пытаюсь написать клиент и сервер приложение, используя сервер Apache Mina, когда я отправляю сообщение между клиентом и сервером, я получаю ответ "0: ADD (10)"

Ответы [ 6 ]

3 голосов
/ 14 декабря 2010

Вы можете использовать регулярное выражение вроде этого:

\\((\\d+)\\)

, чтобы извлечь число из скобок.Дополнительную информацию о регулярном выражении Java можно найти здесь и здесь Примечание. Поскольку java добавляет, по умолчанию, ^ и $ в начале и конце соответственно, мы должныдобавьте .* до и после шаблона, который мы хотим сопоставить.

String[] str  = new String[]{"0:ADD(10)","1:ADD(20)"};
        Pattern pattern = Pattern.compile("^.*\\((\\d+)\\).*$");
        for (int i = 0; i < str.length; i++)
        {
            Matcher m = pattern.matcher(str[i]);
            System.out.println(m.matches());
            System.out.println(m.group(1));
        }

Печать:

true

10

true

20

2 голосов
/ 14 декабря 2010
    String[] split = "{\"0:ADD(10)\",\"1:ADD(20)\"}".split( "," ); 
    for ( String e : split ) {
        String arg = e.substring( e.indexOf( '(' )+1, e.indexOf( ')') );
         System.out.println( arg );
     }
1 голос
/ 14 декабря 2010

Использование гуавы :

String digits=(digits=CharMatcher.DIGIT.retainFrom("0:ADD(10)")).substring(1,digits.length());
1 голос
/ 14 декабря 2010

Может быть немного излишним, но это должно работать

    String input="{\"0:ADD(10)\",\"1:ADD(20)\"}";
    Pattern r= Pattern.compile(":ADD\\(([0-9]*)\\)");
    Matcher m = r.matcher(input);
    while(m.find()){
        System.out.println(m.group(1)); //Result is here
    }
1 голос
/ 14 декабря 2010

Можно попробовать

int num = Integer.parseInt("0:ADD(10)".split("[()]")[1]);
0 голосов
/ 14 декабря 2010

эта строка работает:

String[] arr = str.replace("{", "").replace("}", "").replaceAll("\"\\d+:ADD\\((\\d+)\\)\"", "$1").split(",");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...