Строка синтаксического анализа Java - PullRequest
3 голосов
/ 28 января 2011

Я хочу разобрать следующую строку в java

<some lines here>
Key1:thingIWantToKnow
Key2:otherThing
Key3:bla
Key4:bla
Key5:bla
<(possibly) more lines here>

Все строки заканчиваются символом новой строки (\ n).Я хочу сохранить пару значений, как только найду ключ, который мне нужен.

Ответы [ 3 ]

3 голосов
/ 28 января 2011
  1. Если данные находятся в строке, вы можете использовать StringReader для чтения по одной строке текста за раз.
  2. Для каждой прочитанной строки вы можете использовать String.startsWith (...), чтобы увидеть, не нашли ли вы одну из ваших ключевых строк.
  3. Когда вы найдете строку, содержащую данные ключа / значения, вы можете использовать String.split (...), чтобы получить данные ключа / значения отдельно.
3 голосов
/ 28 января 2011

Если вам нужна карта:

Map<String, String> keyValueMap = new HashMap<String,String>();

String[] lines = input.split("\n");
if (lines == null) {
  //Compensate for strange JDK semantics
  lines = new String[] { input };
}

for (String line : lines) {
  if (!line.contains(":")) {
    //Skip lines that don't contain key-value pairs
    continue;
  }
  String[] parts = line.split(":");
  keyValueMap.put(parts[0], parts[1]);
}

return keyValueMap;
1 голос
/ 28 января 2011

Вы можете использовать StringUtils.split

http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html

Если после этого вы ищете строки, содержащие «Key», используйте StringUtils.contains

Не самый быстрый, но, безусловно, самый удобный и нуль-безопасный.

...