gpt4 book ai didi

java - 如何在java中有效地从String中获取所需的数据?

转载 作者:行者123 更新时间:2023-11-30 06:47:28 24 4
gpt4 key购买 nike

我有一个字符串文本。我想获取文本中“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());
}

但是它给出了这个输出,而我只想要值(value),为此我必须像上面那样进行额外的工作:

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中有效地从String中获取所需的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43451864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com