我有这样的网址
https://example.com/Result.aspx?PaymentID=6543210987654321&Result=NOT%20CAPTURED&PostDate=0305&TranID=4589644171260650&Auth=&Ref=606512084038&TrackID=9105423&UDF1=10.000
从此我想在 = 和& 之间提取字符串。
我用来获取此代码的代码是
String[] b=new String[10];
a= weburl.split("=");
for(i=0; i< a.length; i++)
{
b = a[i].split("&");
}
但是通过使用这个我只得到最后一个字符串,它在数组的最后一个索引(最后在url中是10.00)。 我也试过用这个
for(i=0;i<=weburl.length;i++)
weburl.substring(weburl.indexOf("=")+1,weburl.indexOf("&"));
它只发出url的第一个子串,位于 = 和&amp; 之间,即6543210987654321 ..
但我想要介于两者之间的所有字符串..
帮助表示感谢!
答案 0 :(得分:3)
您可以按照步骤获得正确的结果
?
的第一个索引到结尾&
=
示例代码
String url = "https://example.com/Result.aspx?PaymentID=6543210987654321&Result=NOT%20CAPTURED&PostDate=0305&TranID=4589644171260650&Auth=&Ref=606512084038&TrackID=9105423&UDF1=10.000";
String parameters[] = url.substring(url.indexOf("?") + 1).split("&");
for (String parameter : parameters) {
try {
String[] parts = parameter.split("=");
String name = parts[0];
if(parts.length == 2) {
String enValue = parts[1];
String value = java.net.URLDecoder.decode(enValue, "UTF-8");
System.out.println(name + " = " + value);
} else {
System.out.println(name + " = ");
}
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
希望它会有所帮助。
答案 1 :(得分:1)
而不是
a= weburl.split("=");
for(i=0; i< a.length; i++)
{
b = a[i].split("&");
}
尝试使用
List<String> b = new ArrayList<>();
a= weburl.split("&");
for(i=0; i< a.length; i++)
{
b.add(a[i].substring(a[i].indexOf("=")+1));
}
答案 2 :(得分:0)
你能试试吗?
String[] array = url.split("=");
for (int i = 1; i < array.length; i++) {
String[] subArray = array[i].split("&");
if (subArray.length > 0) {
Log.e("VALUE", subArray[0]);
}
}
答案 3 :(得分:0)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String regex = "=(([^&])+)&";
Matcher matcher = Pattern.compile(regex).matcher("https://example.com/Result.aspx?PaymentID=6543210987654321&Result=NOT%20CAPTURED&PostDate=0305&TranID=4589644171260650&Auth=&Ref=606512084038&TrackID=9105423&UDF1=10.000");
while(matcher.find()){
System.out.println(matcher.group(1));
}
}
}