В Java как извлечь строку из фразы с помощью функции split () - PullRequest
0 голосов
/ 27 сентября 2011

Можно ли извлечь строку из фразы, используя функцию split () с подфразами в качестве разделителей?Например, у меня есть фраза "Обязательная строка - Любая строка1 - Любая строка2".Как извлечь «Любая строка1» с разделителями в виде «Обязательная строка» и «[a-zA-Z]»

Вот как я пытаюсь извлечь:

String str="Mandatory string - Any string1 - Any string2";
String[] result= str.split("Mandatory\\string\\s-\\s|\\s-\\s[a-zA-Z]+");

Результат этого кода

result = ["Mandatory string","ny string1","ny string2"]

Но желательно:

result = ["Any string1"]

Могу оценить помощь, спасибо.

Ответы [ 4 ]

1 голос
/ 27 сентября 2011

String[] result= str.split("Mandatory\\s(1)string\\s-\\s|\\s-\\s[a-zA-Z\\s(2)]+");

Вы только что забыли "s" в позиции (1)
и там должно быть "\\ s" в позиции (2)

попробуйте эту строку:
String[] result= str.split("Mandatory\\sstring\\s-\\s|\\s-\\s[a-zA-Z\\s]+");

1 голос
/ 27 сентября 2011

Прежде всего, здесь есть опечатка:

Mandatory\\string

Это, вероятно, должно читаться как

Mandatory\\sstring

В любом случае, я бы либо использовал "-" в качестве разделителя, и получил бывторой токен:

str.split(" - ")[1] // TODO: prod version should do bounds checking etc

или используйте другой инструмент целиком, вероятно, регулярное выражение соответствует следующему регулярному выражению:

"Mandatory string - (.*) - .*"

Группа захвата в скобках даст вам строку, которую выпосле того, как.

0 голосов
/ 27 сентября 2011

Почему бы не

String[] result = str.split(" - ");
return result.length < 2 ? "" : result[1];
0 голосов
/ 27 сентября 2011

Если в вашей входной строке есть определенный формат, просто разбейте ее, а затем используйте необходимые части:

String[] resultArray = str.split(" - ");
String whatYouWant = resultArray[1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...