2013-05-01 3 views
-2

Я получаю заголовок запроса со значением, содержащим несколько двойных кавычек. Как я разбираю его в своем Java-коде?Анализ заголовка http-запроса

вот как заголовок выглядит

рр-группы: "Администратор", "суперпользователя", "вид", "Edit"

+0

Вопрос связан с основной Java, а не какой-либо связанных с веб-материала. – Lion

ответ

0

Разделите строку либо split(), либо StringTokenizer, а затем обрезайте кавычки.

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

Doesnt поддерживают встроенные кавычки, хотя, не уверен, если это требуется

+1

«StringTokenizer - это унаследованный класс, который сохраняется по соображениям совместимости, хотя его использование не рекомендуется в новом коде. Рекомендуется, чтобы каждый, кто ищет эту функцию, использовал метод split для String или пакет java.util.regex». Поэтому не предлагайте строковый токенизатор. – brunoais

+0

split - рекомендуемый метод - «StringTokenizer - это унаследованный класс, который сохраняется по соображениям совместимости, хотя его использование не рекомендуется в новом коде. Рекомендуется, чтобы любой, кто ищет эту функцию, использовал метод split для String или пакет java.util.regex вместо." –

+0

@brunoais haha ​​примерно в то же время :-) –

0

Я хотел бы предложить, глядя в splitmethod.

+1

Этого будет недостаточно для цитируемых строк. – SLaks

+0

Это будет, на самом деле, вам просто нужно быть умным о том, как вы его обрабатываете. Регулярное сравнение выражений - это, безусловно, путь сюда. –

0

Если вы пытаетесь сделать это вручную, а не использовать существующие рамки для HTTP-запросов, вам нужно будет разбора Стройте себя. Лучший способ сделать это - использовать регулярные выражения (http://docs.oracle.com/javase/tutorial/essential/regex/ ... важная часть этого: http://docs.oracle.com/javase/tutorial/essential/regex/groups.html). Альтернативно, вы можете потратить некоторое время на использование различных методов String, таких как .split и .substring

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] 
+0

Вы можете добавить проверку ошибок, посмотрев на .chartAt (0) 'и' .chartAt (val.length()) ' –

+0

Там обновлено, чтобы иметь дело со значениями, которые не кавычки, смешанные со значениями, которые являются значениями –

+0

И значения, которые содержат кавычки внутри –

Смежные вопросы