Java получает строку между двумя строками - PullRequest
0 голосов
/ 19 сентября 2019

хотите спросить, как получить значение "200" с этим типом паттерна?Мне нужен самый простой и легкий способ без добавления дополнительной библиотеки зависимостей.Мне не нужен метод подстроки (11, s.length () - 1).

~PHONE_IDX=200~PHONE_DD=100~PHONE_KK=50~

Ответы [ 2 ]

3 голосов
/ 19 сентября 2019

Вы можете использовать регулярные выражения для этого, выполнив поиск шаблона ~ PHONE_characters = digits, например:

String str = "~PHONE_IDX=200~PHONE_DD=100~PHONE_KK=50~";
Pattern p = Pattern.compile("~PHONE_(?<attribute>\\w+)=(?<value>\\d+)");
Matcher m = p.matcher(str);//matcher for string
while(m.find())
{
  System.out.println("Next group: "+m.group());
  System.out.println("Attribute: "+m.group("attribute"));
  System.out.println("Value: "+m.group("value"));
}

Этот код выведет следующее:

Next group: ~PHONE_IDX=200
Attribute: IDX
Value: 200
Next group: ~PHONE_DD=100
Attribute: DD
Value: 100
Next group: ~PHONE_KK=50
Attribute: KK
Value: 50
0 голосов
/ 19 сентября 2019

Используя стандартную библиотеку Java, существует пакет java.util.regex, который может иметь жизнеспособное решение.

Pattern p = Pattern.compile("~PHONE_IDX=([0-9]*)", int flags);
Matcher matches = p.matcher(input);
boolean isMatches = m.matches();

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

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