使用分隔符

时间:2018-03-23 16:55:17

标签: java string

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 的值,而不必担心字符串中与令牌无关的更改,因为我无法控制字符串。我在线搜索但我无法找到我特定问题的答案,或者我可能使用错误的单词进行搜索。

3 个答案:

答案 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的索引。从该索引创建子字符串。将子字符串转换为数字。数字可以在字符串开始时提取数字。