我有一个字符串文本。我想在文本中获取“签名”关键字的值。
这是我的示例代码:
public void parseMethod(){
String Text = "hmac username=\"dhannan\", algorithm=\"hmac-sha1\", headers=\"content\", signature=\"VwjwFaNSw3cLQbuqtwl2XPOmcis=\"";
Pattern pattern = Pattern.compile("signature=\"(.+)\"");
Matcher matcher = pattern.matcher(authorization);
int s = Text.indexOf("signature=");
String data="";
int index=s+11;
while(Text.charAt(index)!='"'){
data+=Text.charAt(index);
index+=1;
}
System.out.println(data);
}
所以这会给我我想要的输出:
VwjwFaNSw3cLQbuqtwl2XPOmcis=
我不喜欢这种方法。我想以简单的方式(例如正则表达式)或其他方式进行操作。
通过使用正则表达式
Pattern pattern = Pattern.compile("signature=\"(.+)\"");
Matcher matcher = pattern.matcher(Text);
if(matcher.find()){
System.out.println(matcher.group());
}
但是,它给出了此输出,而我只需要我需要进行额外工作的值,如上面所示:
signature="VwjwFaNSw3cLQbuqtwl2XPOmcis="
请向我建议一种有效的方法。
最佳答案
就像建议的11thdimension一样,您应该使用matcher.group(1)
查找值本身:
String Text = "hmac username=\"dhannan\", algorithm=\"hmac-sha1\", headers=\"content\", signature=\"VwjwFaNSw3cLQbuqtwl2XPOmcis=\"";
Pattern pattern = Pattern.compile("signature=\"(.+)\"");
Matcher matcher = pattern.matcher(Text);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
>> VwjwFaNSw3cLQbuqtwl2XPOmcis=
关于java - 如何在Java中有效地从字符串中获取所需数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43451864/