Как я могу получить числа из строк, когда длина строки меняется? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть список строк, например (q1,0)->(q2,_,R), и мне нужно выбрать q1, 0, а затем q2, _, R. Я бы использовал .substring(enter numbers), но расположение этих символов меняется в списке. Например, у меня также есть (q11,1)->(q11,1,L). Таким образом, хотя для первой строки я мог сделать .substring (1,3), чтобы получить q1, затем .substring (4,5), чтобы получить 0, я не могу сделать то же самое для другой строки.

Мне приходит в голову, что я могу найти длину строки, а затем использовать подстроку с разными числами для каждой длины. Мне интересно, есть ли более простой способ сделать это.

1 Ответ

0 голосов
/ 20 марта 2020

Вы можете использовать регулярное выражение как \\(([^)]+)\\)

public static void main(String[] args) {
   String str = "(q1,0)->(q2,_,R)";
   Matcher m = Pattern.compile("\\(([^)]+)\\)").matcher(str);
   while(m.find()) {
          System.out.println(m.group(1));    
   }
}

ВЫХОД:

q1,0
q2,_,R

Регулярное выражение можно прочитать следующим образом:

  • \\( - character (
  • ( - start match group
  • [- one of these characters

  • ^ - not the following character

  • ) - with the previous ^, this means "every character except )"

  • + - one of more of the stuff from the [] set

  • ) - stop match group

  • \\) - literal closing paranthesis

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...