0

我有如下字符串

olah billo:78517700-1f01-11e3-a6b7-3c970e02b4ec, jiglo piglo:68517700-1f01-11e3-a6b7-3c970e02b4ec, nimho james:98517700-1f01-11e3-a6b7-3c970e02b4ec, kathy ruck:38517700-1f01-11e3-a6b7-3c970e02b4ec

我想要一个正则表达式来获取 Map 中冒号前后的字符串,其中键是冒号后的字符串。我想知道什么是最有效的方法。

4

2 回答 2

4

也许这是最简单的方法(伪代码):

  • 用逗号分割字符串。:这将为您提供一个包含每个分隔字符串的数组。
  • 创建一个Map<String, String>
  • 遍历数组
    • 对于数组中的每个元素,以冒号分割":"。这将再次为您提供一个数组。让我们命名它arr
    • 在地图中添加一个条目,键为arr[0],值为arr[1]。根据需要修剪前导和尾随空格。或者在逗号上进行第一次拆分,后跟 0 个或多个空格 - ,\s*
于 2013-09-28T08:25:20.050 回答
0

用于split()逗号冒号分割字符串。

String str = "olah billo:78517700-1f01-11e3-a6b7-3c970e02b4ec, jiglo piglo:68517700-1f01-11e3-a6b7-3c970e02b4ec, nimho james:98517700-1f01-11e3-a6b7-3c970e02b4ec, kathy ruck:38517700-1f01-11e3-a6b7-3c970e02b4ec";
            String[] splitComma = str.split(",");
            String[] splitColon = splitComma[0].split(":");
            HashMap<String, String> finlMapArr = new HashMap<>();
            for (int j = 0; j < splitComma.length; j++) {
                 splitColon = splitComma[j].split(":");
                finlMapArr.put(splitColon[0] , splitColon[1]);
            }

            System.out.println(finlMapArr);
于 2013-09-28T09:25:18.893 回答