【问题标题】:Java parsing stringJava解析字符串
【发布时间】:2011-01-27 22:15:06
【问题描述】:

我希望在 java 中解析以下字符串

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

所有行都以换行符 (\n) 结尾。一旦找到我关心的密钥,我希望存储值对。

【问题讨论】:

  • 好的。到目前为止,您尝试过什么?
  • 如何解析?您想将它们拆分成键:值对吗?

标签: java parsing delimiter


【解决方案1】:

如果地图是你想要的:

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;

【讨论】:

    【解决方案2】:
    1. 如果数据在字符串中,那么您可以使用 StringReader 一次读取一行文本。
    2. 对于您阅读的每一行,您都可以使用 String.startsWith(...) 查看是否找到了您的关键行之一。
    3. 当您找到包含键/值数据的行时,您可以使用 String.split(...) 分别获取键/值数据。

    【讨论】:

      【解决方案3】:

      你可以使用 StringUtils.split

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

      如果您在此之后要查找包含“Key”的行,请使用 StringUtils.contains

      不是最快的,但肯定是最方便的,也是 null 安全的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-26
        • 2011-01-16
        • 1970-01-01
        • 2012-08-06
        • 2014-10-19
        • 2012-05-25
        • 2015-04-30
        相关资源
        最近更新 更多