有没有一种简单的方法可以将带引号的文本解析为java的字符串?我有这样的行来解析:

author="Tolkien, J.R.R." title="The Lord of the Rings"
publisher="George Allen & Unwin" year=1954

我想要的只是托尔金(Tolkien,J.R.R.),《指环王》,乔治·艾伦和温温(George Allen&Unwin),1954年作弦乐。

最佳答案

您可以使用类似的正则表达式

"(.+)"

它将匹配引号之间的任何字符。在Java中将是:
Pattern p = Pattern.compile("\\"(.+)\\"";
Matcher m = p.matcher("author=\"Tolkien, J.R.R.\"");
while(matcher.find()){
  System.out.println(m.group(1));
}

请注意,使用的是group(1),这是第二个匹配项,第一个匹配项,group(0)是带引号的完整字符串

当然,您也可以使用子字符串选择除第一个和最后一个字符以外的所有内容:
String quoted = "author=\"Tolkien, J.R.R.\"";
String unquoted;
if(quoted.indexOf("\"") == 0 && quoted.lastIndexOf("\"")==quoted.length()-1){
    unquoted = quoted.substring(1, quoted.lenght()-1);
}else{
  unquoted = quoted;
}

09-16 06:37