String ccToken = "";
String result = "ssl_transaction_type=CCGETTOKENssl_result=0ssl_token=4366738602809990ssl_card_number=41**********9990ssl_token_response=SUCCESS";
String[] elavonResponse = result.split("=|ssl");
for (String t : elavonResponse) {
System.out.println(t);
}
ccToken = (elavonResponse[6]);
System.out.println(ccToken);
我希望能够抓取字符串的特定部分并将其存储在变量中。我目前正在这样做的方法是拆分字符串,然后将单元格的值存储到我的变量中。有没有办法指定我想在" ssl_token =" 之后存储数字?
我希望我的代码能够获取 ssl_token 的值,而不必担心字符串中与令牌无关的更改,因为我无法控制字符串。我在线搜索但我无法找到我特定问题的答案,或者我可能使用错误的单词进行搜索。
答案 0 :(得分:2)
您可以将replaceAll与此正则表达式.*ssl_token=(\\d+).*
:
String number = result.replaceAll(".*ssl_token=(\\d+).*", "$1");
输出
4366738602809990
答案 1 :(得分:0)
你可以用正则表达式来做。更改输入字符串的规格可能会更好,这样每个键/值对都用&符号(&)分隔,这样你就可以拆分它(类似于HTTP POST参数)。
Pattern p = Pattern.compile(".*ssl_token=([0-9]+).*");
Matcher m = p.matcher(result);
if(m.matches()) {
long token = Long.parseLong(m.group(1));
System.out.println(String.format("token: [%d]", token));
} else {
System.out.println("token not found");
}
答案 2 :(得分:0)
搜索ssl_token的索引。从该索引创建子字符串。将子字符串转换为数字。数字可以在字符串开始时提取数字。