我得到一个请求标头,其值包含多个双引号,如何在我的 java 代码中解析它?
这是标题的样子
pp-groups:“管理员”、“超级用户”、“查看”、“编辑”
为什么不拆分和修剪?
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]
我建议研究一下split
方法。
split()
用or分割字符串StringTokenizer
,然后去掉引号。
String header=request.getHeader("pp-groups");
for (String val : header.replace("\"", "").split(",")) System.out.println(val);
虽然不支持内联引号,但不确定是否需要
如果您尝试手动执行此操作,而不是使用现有的 HTTP 请求框架,您将需要自己解析字符串。最好的方法是使用正则表达式(http://docs.oracle.com/javase/tutorial/essential/regex/ ...其中的重要部分:http ://docs.oracle.com /javase/tutorial/essential/regex/groups.html)。或者,您可以花一些时间处理各种 String 方法,例如 .split 和 .substring