我有一个String Text。我想在Text中获得“signature”关键字的值。
这是我的代码示例:
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="
请建议我这样做的有效方法。
答案 0 :(得分:1)
与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=