使用java获取特定字符串

时间:2015-08-18 09:44:52

标签: java

我有一个这样的字符串:

URL#appURL=xre://ovaplatform.net:143/frace?accountId={APP:accountId}&config.base64=eyJlbmFibGVIYXhlZSI6InRydWUiLCJhcHBOYW1lIjoiR2VuZXJpY0NoYXJpb3RBcHAiLCJzaG93VG9hc3RlciI6InRydWUiLCJ1cmwiOiJodHRwOi8vd3d3LnlhaG9vLmNvbSJ9&samlAssertion={ATTR:token}&timeZone={APP:timeZone}&sessionId={APP:sessionId}&deviceId={APP:deviceId}&config.type=base64"

从这个字符串中我必须得到config.base64的值

eyJlbmFibGVIYXhlZSI6InRydWUiLCJhcHBOYW1lIjoiR2VuZXJpY0NoYXJpb3RBcHAiLCJzaG93VG9hc3RlciI6InRydWUiLCJ1cmwiOiJodHRwOi8vd3d3LnlhaG9vLmNvb

使用java有没有简单的方法来获取它?

3 个答案:

答案 0 :(得分:1)

当字符串开始符合给定的标准时使用正则表达式,或者在.split上使用字符串config.base64并取出之后的任何字符串,然后将其与&或samlAssertion并参加第一部分

String[] parts = string.split("config.base64=");
String config = parts[1];
String[] partsConfig = config.split("&samlAssertion=");
String configOnly = partsConfig[0]

答案 1 :(得分:1)

如果参数的顺序相同,那么我们可以做 -

String url = "your_URL_goes here";
String startKey = "&config.base64=";
String endKey = "&samlAssertion=";

String result = url.substring(url.indexOf(startKey) + startKey.length(), url.indexOf(endKey));

如果您希望&作为结束键,可以尝试:

String startKey = "&config.base64=";
String endKey = "&";

String tmpStr = url.substring(url.indexOf(startKey) + startKey.length());
String result = (tmpStr.indexOf(endKey) == -1) ? tmpStr : tmpStr.substring(0, tmpStr.indexOf(endKey));

请注意,如果&是参数值的一部分,则可能无效。所以,要小心。

答案 2 :(得分:0)

import java.util.*;

class KeyValueFromURL
{
    public static void main (String[] args)
    {
        String url = "URL#appURL=xre://ovaplatform.net:143/frace?accountId={APP:accountId}&config.base64=eyJlbmFibGVIYXhlZSI6InRydWUiLCJhcHBOYW1lIjoiR2VuZXJpY0NoYXJpb3RBcHAiLCJzaG93VG9hc3RlciI6InRydWUiLCJ1cmwiOiJodHRwOi8vd3d3LnlhaG9vLmNvbSJ9&samlAssertion={ATTR:token}&timeZone={APP:timeZone}&sessionId={APP:sessionId}&deviceId={APP:deviceId}&config.type=base64";
        int start = url.indexOf('?');
        String keyValue = url.substring(start + 1);
        String[] pairs = keyValue.split("&");
        Map<String, String> pair = new HashMap<String, String>();
        for (String p : pairs) {
            int eq = p.indexOf('=');
            pair.put(p.substring(0, eq), p.substring(eq + 1));
        }
       // System.out.println(pair.toString());
        System.out.println(pair.get("config.base64"));
    }
}

假设&用于拆分key value对,key value对在第一个?之后开始。您可以使用此类在HashMap中存储所有键值对,并从value获取key