Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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 - Fatal编程技术网

使用java获取特定字符串

使用java获取特定字符串,java,Java,我有这样一个字符串: URL#appURL=xre://ovaplatform.net:143/frace?accountId={APP:accountId}&config.base64=eyJlbmFibGVIYXhlZSI6InRydWUiLCJhcHBOYW1lIjoiR2VuZXJpY0NoYXJpb3RBcHAiLCJzaG93VG9hc3RlciI6InRydWUiLCJ1cmwiOiJodHRwOi8vd3d3LnlhaG9vLmNvbSJ9&samlAsserti

我有这样一个字符串:

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实现吗?

当字符串开始满足给定的临界值时,使用正则表达式,或者在
config.base64
上使用字符串的
.split
,然后取后面的字符串,然后根据&or
samlAssertion
将其拆分,并取第一部分

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

若参数的顺序是相同的,那个么我们可以这样做-

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));
请记住,如果
&
是参数值的一部分,这可能不起作用。所以,要小心。

导入java.util.*;
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"));
    }
}
类KeyValueFromURL { 公共静态void main(字符串[]args) { String url=“url#appURL=xre://ovaplatform.net:143/frace?accountId={APP:accountId}&config.base64=eyjlbmfibgviyxhlzsi6inrydwuilcjhchboyw1lijoir2vuzxjpy0noyxjpb3rbchailcjzag93vg9hc3rlcii6inrydwuilcj1cmwioiijodhrwoi8vd3lnlhag9vlmnvbsj9&samlAssertion={ATTR:token}&timeZone={APP:timeZone}&sessionId={APP:sessionId}&deviceId={APP APP:sessionId}&config.type=base64“; int start=url.indexOf(“?”); String keyValue=url.substring(start+1); String[]pairs=keyValue.split(&); 映射对=新的HashMap(); for(字符串p:对){ 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”); } }

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

中获取
值。请使用java.util.regex。您的代码听起来不错。但是endkey可能会有所不同。因此,我只能使用“&”来代替endkey。但是我得到的数组索引错误