1
我有一個字符串文本。我想在Text中獲得「簽名」關鍵字的價值。
這是我的代碼示例:
如何在java中有效地從字符串中獲取所需的數據?
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="
請給我建議的有效途徑去做這個。
使用'matcher.group(1)',而不是簡單的'組()',看到這裏的例子https://開頭regex101.com/r/p1H08d/1 – 11thdimension