我有一个这样的字符串:
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有没有简单的方法来获取它?
答案 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