如何取name "David Beckham"中的name和David Beckham这两个值,我取得不对。我思路似乎先空格划分得到第一个name,然后截取“”中内容。
String str = varArr[j];//比如值为 name "David Beckham"
String[] tempArr = str.split(" ");
String key = tempArr[0];
String value = str.substring(str.indexOf("\""), str .indexOf("\""));
难道正确的方法不是用String.split()?
别用空格切分,直接用双引号切分,取前两个字符串,然后trim()一下就好了
我还是习惯用split,虽然感觉比较low。
String[] tempArr = str.split("\"");
String key = tempArr[0].trim();
String value = tempArr[1].trim();
split在这里不合理,用正则准确分割
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public static void main(String[] args) {
Pattern p = Pattern.compile("(name)\\s+\"(\\w+\\s+\\w+)\"");
Matcher m = p.matcher("name \"David Beckham\"");
if (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
}
}
你需要lastIndexOf