从两个不同的角色android之间的url获取所有子串

时间:2016-03-11 11:00:46

标签: android arrays url for-loop split

我有这样的网址

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 ..

但我想要介于两者之间的所有字符串..

帮助表示感谢!

4 个答案:

答案 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));
        }

    }
}