Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中查找匹配后的字符串_Java_Android_Xml - Fatal编程技术网

在java中查找匹配后的字符串

在java中查找匹配后的字符串,java,android,xml,Java,Android,Xml,我对图案有问题。我需要在macapp=和locapp=之后获得valuenumber和text,两个单词之间是&如何做到这一点 字符串温度=http://sedaword.com/app/fr/main.php?macapp=admin22&locapp=30.330345,59.607153; 模式p=Pattern.compile^.*?macapp=.+$&//这是我的问题 匹配器m=p.matchertemp; 如果m.find{ String macapp=String.valueOf

我对图案有问题。我需要在macapp=和locapp=之后获得valuenumber和text,两个单词之间是&如何做到这一点

字符串温度=http://sedaword.com/app/fr/main.php?macapp=admin22&locapp=30.330345,59.607153; 模式p=Pattern.compile^.*?macapp=.+$&//这是我的问题 匹配器m=p.matchertemp; 如果m.find{ String macapp=String.valueOfm.group1;//输出admin22 String locapp=String.valueOfm.group2;//输出30.330345,59.607153 }
您可以这样简单地尝试:

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

您可以这样简单地尝试:

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

可以按以下方式更正正则表达式:

字符串url=http://sedaword.com/app/fr/main.php?macapp=admin22&locapp=30.330345,59.607153; 模式p=Pattern.compile ^.\\?macapp=.+&locapp=.+$; 匹配器m=p.matcherurl; 如果m.find{ 字符串macapp=m.group1; 字符串locapp=m.group2; } 但我建议你为此使用一些图书馆。
另请参见和。您可以通过以下方式更正正则表达式:

字符串url=http://sedaword.com/app/fr/main.php?macapp=admin22&locapp=30.330345,59.607153; 模式p=Pattern.compile ^.\\?macapp=.+&locapp=.+$; 匹配器m=p.matcherurl; 如果m.find{ 字符串macapp=m.group1; 字符串locapp=m.group2; } 但我建议你为此使用一些图书馆。
另请参见和

另一个更通用的选项是使用Java8的流并收集映射中的所有键值对

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() ) );
}

另一个更通用的选项是使用Java8的流并收集映射中的所有键值对

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() ) );
}
我认为这个技巧是一个不情愿的量词,它只需要第一个符号:.+?&。撇开$,我认为这会带来麻烦。我认为这是一个不情愿的量词,它只会占用第一个符号:.+?&。撇开美元不谈,我认为这会给那里带来麻烦。