-2

我得到一个请求标头,其值包含多个双引号,如何在我的 java 代码中解析它?

这是标题的样子

pp-groups:“管理员”、“超级用户”、“查看”、“编辑”

4

4 回答 4

1

为什么不拆分和修剪?

public static void main(String...arg) {
  List<String> vals = new ArrayList<String>();
  String header = "\"Administrator\",\"\"Super\" User\",,\"\",view,\"Edit\"";
  for(String val : header.split(",")) {
    if(val.length() > 0) {
      if(val.charAt(0) == '\"' && val.charAt(val.length()-1) == '\"') {
        if(val.length() > 2) { //not just a pair of quotes
          vals.add(val.substring(1, val.length()-1));
        }
      } else {
        vals.add(val);
      }
    }
  }
  System.out.println(vals);
}

输出:

[Administrator, "Super" User, view, Edit]
于 2013-05-01T21:04:19.170 回答
0

我建议研究一下split 方法

于 2013-05-01T20:55:24.750 回答
0

split()用or分割字符串StringTokenizer,然后去掉引号。

String header=request.getHeader("pp-groups");
for (String val : header.replace("\"", "").split(",")) System.out.println(val);

虽然不支持内联引号,但不确定是否需要

于 2013-05-01T20:56:20.557 回答
0

如果您尝试手动执行此操作,而不是使用现有的 HTTP 请求框架,您将需要自己解析字符串。最好的方法是使用正则表达式(http://docs.oracle.com/javase/tutorial/essential/regex/ ...其中的重要部分:http ://docs.oracle.com /javase/tutorial/essential/regex/groups.html)。或者,您可以花一些时间处理各种 String 方法,例如 .split 和 .substring

于 2013-05-01T20:57:20.117 回答