使用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
,然后取后面的字符串,然后根据&orsamlAssertion
将其拆分,并取第一部分
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。但是我得到的数组索引错误