Нахождение после соответствия строки в Java - PullRequest
1 голос
/ 22 октября 2019

У меня проблема с рисунком. Мне нужно получить значение (число и текст) после macapp= и после locapp= между 2 словами: & как это сделать

String temp  = "http://sedaword.com/app/fr/main.php?macapp=admin22&locapp=30.330345,59.607153";

Pattern p = Pattern.compile("^.*?macapp=(.+)$&"); //this my problem

Matcher m = p.matcher(temp);

if (m.find()) {

    String macapp = String.valueOf(m.group(1)); //output   admin22
    String locapp= String.valueOf(m.group(2));//output 30.330345,59.607153
}

Ответы [ 3 ]

1 голос
/ 22 октября 2019

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

String url  = "http://sedaword.com/app/fr/main.php?macapp=admin22&locapp=30.330345,59.607153";

Pattern p = Pattern.compile("^.*\\?macapp=(.+)&locapp=(.+)$");

Matcher m = p.matcher(url);
if (m.find()) {
  String macapp = m.group(1);
  String locapp = m.group(2);
}

Но я бы посоветовал вам использовать какую-то библиотеку для этой цели. См. Также это и это

1 голос
/ 22 октября 2019

Другим более общим вариантом является использование потоков Java 8 и сбор всех пар ключ-значение на карте.

String url = "http://sedaword.com/app/fr/main.php?macapp=admin22&locapp=30.330345,59.607153";
url = url.substring( url.indexOf( "main.php" ) + "main.php".length() + 1 ); // substring after main.php

Map<String,String> map = Arrays.stream( url.split( "&" ) ) // split on &
         .map( str -> str.split( "=" ) ) // split on =
         .collect( Collectors.toMap( arr -> arr[ 0 ], arr2 -> arr2[ 1 ] ) ); // collect to map

for ( Map.Entry<String,String> entry : map.entrySet() ) {
    System.out.println( String.format( "Key=%s, value=%s", entry.getKey(), entry.getValue() ) );
}

вывод равен

Key=locapp, value=30.330345,59.607153
Key=macapp, value=admin22
1 голос
/ 22 октября 2019

Вы можете просто попробовать так:

String temp  = "http://sedaword.com/app/fr/main.php?macapp=admin22&locapp=30.330345,59.607153";
String[] resultArray = temp.split("macapp=")[1].split("&locapp=");
System.out.println(resultArray[0]); //admin22
System.out.println(resultArray[1]); //30.330345,59.607153
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...