【问题标题】:How to retrieve word after specific word in Java?如何在Java中特定单词之后检索单词?
【发布时间】:2017-04-19 15:28:10
【问题描述】:

我有这种String

{aa=bbbb, cc=blabla1, ee=ffff, cc=blabla2, gg=hhhh, cc=blabla3,.......}

我想得到cc=之后所有单词的列表。

我该怎么做?我对正则表达式的东西不是很有信心。

【问题讨论】:

  • 是地图还是属性对象?
  • ì 这是一个地图对象,然后我使用 mymap.get("mykey") 返回一个列表(我通过 toString() 方法将其用作字符串)
  • 您能否展示您尝试过的方法以及您认为导致问题的代码中的问题?
  • 你是怎么知道String的?从序列化Map?如果是这样,您只需要反序列化它:stackoverflow.com/questions/2747819/…

标签: java regex pattern-matching


【解决方案1】:
public static void main(String[] args) {
    String input = "aa=bbbb, cc=blabla1, ee=ffff, cc=blabla2, gg=hhhh, cc=blabla3";
    String[] splitValues = input.split(", ");
    Map<String,List<String>> results = new Hashtable<>();
    List<String> valueList = null;
    // iterate through each key=value adding to the results
    for (String a : splitValues) {
         // a = "aa=bbbb"  etc
         String[] keyValues = a.split("=");
         // you can check if values exist. This assumes they do.
         String key = keyValues[0];
         String value = keyValues[1];
         // if it is already in map, add to its value list
         if (results.containsKey(key)) {
            valueList = results.get(key);
            valueList.add(value);
          } else {
            valueList = new ArrayList<>();
            valueList.add(value);
            results.put(key, valueList);
          }
        }

         System.out.println("cc= values");
         valueList = results.get("cc");
         // assumes value is in results
         for (String a : valueList)
            System.out.println(a);

}

【讨论】:

    【解决方案2】:

    你的问题很模糊,但我猜字符串是按原样提供的,比如:

    String toSearch = "{aa=bbbb, cc=blabla1, ee=ffff, cc=blabla2, gg=hhhh, cc=blabla3,.......}";
    

    我猜你指的是抽象 List 对象而不是数组。这是一个解决方案:

    String toSearch = "{aa=bbbb, cc=blabla1, ee=ffff, cc=blabla2, gg=hhhh, cc=blabla3,.......}";
    List<String> result = new ArrayList<String>();
    int prevMatch = 0;
    while (toSearch.indexOf("cc=", prevMatch+1) != -1) {
        result.add(toSearch.substring( // Substring method.
                   toSearch.indexOf("cc=",prevMatch+1)+3,toSearch.indexOf(",") //Getting correct indexes.
                   ));
                   prevMatch = toSearch.indexOf("cc=",prevMatch+1);
    }
    

    prevMatch 变量确保将返回的 indexOf("cc=") 将是字符串中出现的下一个。对于上述字符串,返回的 ArrayList 将包含单词“blabla1”、“blabla2”、“blabla3”以及遇到的其他任何内容。

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2019-10-10
      • 1970-01-01
      • 2020-06-29
      相关资源
      最近更新 更多