使用split函数从字符串中获取特定值

时间:2015-02-04 09:09:34

标签: java string

我有类似这样的字符串

APIKey testapikey=mysecretkey

我想将mysecretkey转换为String属性

我试过的是

String[] couple = string.split(" ");
String[]   values=couple[1].split("=");
String mykey= values[1];

这是正确的方法吗?

3 个答案:

答案 0 :(得分:0)

您可以使用String.replaceAll(...)方法。

String string = "APIKey testapikey=mysecretkey";
// [.*key=] - match the substring ending with "key="
// [(.*)] - match everything after the "key=" and group the matched characters
// [$1] - replace the matched string by the value of cpaturing group number 1
string = string.replaceAll(".*key=(.*)", "$1");
System.out.println(string);

答案 1 :(得分:0)

不要使用split()您将不必要地创建一个字符串数组。

使用字符串myString = originalString.replaceAll(".*=","");

答案 2 :(得分:0)

我认为在这里使用split非常容易出错。传入字符串格式的小变化(例如添加的空格)可能会导致难以诊断的错误。我的建议是安全地使用它并使用正则表达式来确保文本完全符合您的期望:

Pattern pattern = Pattern.compile("APIKey testapikey=(\\w*)");
Matcher matcher = pattern.matcher(apiKeyText);
if (!matcher.matches())
    throw new IllegalArgumentException("apiKey does not match pattern");
String apiKey = matcher.group();

该代码比使用split更好地记录您的意图,并在格式中获取意外更改。唯一可能的缺点是性能,但假设你使pattern成为static final(以确保它被编译一次),那么除非你打电话数百万次,否则我非常怀疑这将是一个问题。