我有一个字符串文本。我想在文本中获取“签名”关键字的值。
这是我的示例代码:

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/

10-16 04:09