Разбирать слова по | - PullRequest
0 голосов
/ 24 мая 2018

У меня есть строка # JSGF V1.0;grammar numbers;public <accion> = (one| two| three); Мне нужны числа: один, два и три.

Я сделал это String answer = res.substring(res.indexOf("(")+1,res.indexOf(")")); и получил one| two| three, но у меня возникли проблемы в этой части.

Идеи?

Ответы [ 3 ]

0 голосов
/ 24 мая 2018
String res = "(one| two| three);";
String answer = res.substring(res.indexOf("(")+1,res.indexOf(")"));
for(String str : answer.split("\\s*\\|\\s*")) {
    System.out.println(str);
}
0 голосов
/ 24 мая 2018

разделить answer на несловарные символы:

public static void main(String[] args) {
    String res = "JSGF V1.0;grammar numbers;public <accion> = (one| two| three);";
    String answer = res.substring(res.indexOf("(") + 1, res.indexOf(")"));
    String[] numbers = answer.split("[^\\w]+"); // split on non-word character
    for (String number : numbers) {
        System.out.println(number);
    }
}

, вывод:

one
two
three
0 голосов
/ 24 мая 2018

Вы можете получить числа в виде массива, используя

String numbers[] = answer.split("\\s*\\|\\s*");

\\s*\\|\\s*: 0 или более пробелов, чем символ | и 0 или более пробелов

...