【问题标题】:What's the easiest way to break this String down to key/value strings in Java for Android?在 Java for Android 中将此字符串分解为键/值字符串的最简单方法是什么?
【发布时间】:2012-07-17 21:59:55
【问题描述】:

这是我的String

&username=john&password=12345&email=john@go.com

将其分解为键/值字符串以便它们可以作为参数添加的最佳和最有效的方法是什么?这是我需要的一个模拟示例:

for (set in array)
{
   params.add(new BasicNameValuePair(set.key, set.value));
}

【问题讨论】:

  • 这些字符串是从哪里来的?它们实际上是查询字符串的一部分吗?如果是这样,您应该使用能够理解查询字符串的东西(执行所有适当的转义等)。
  • 它看起来很像一个查询字符串。
  • 是的,它是来自第 3 方来源的查询字符串。有什么特殊的方法可以分解它们吗?

标签: java android for-loop iterator key-value


【解决方案1】:

不确定它是否在 java for android 中可用,但在 Java 8 中,可以使用以下方法将字符串分解为键值对:

String string = "&username=john&password=12345&email=john@go.com";
Map<String, String> map= Stream.of(string.split("&")).map(p->p.split("=")).filter(p->p!=null && p.length==2).collect(Collectors.toMap(p->p[0], p->p[1]));

【讨论】:

    【解决方案2】:
    String exp="&username=john&password=12345&email=john@go.com"
    String[] pairs=exp.split("&");
    String[] temp;
    Map<String, String> myMap= new HashMap<String, String>();
    
    for(i=0;i<pairs.length;i++){
    temp=pairs[i].split("=");
    myMap.put(temp[0],temp[1]);
    
    }
    

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      这样做:

      String all = "&username=john&password=12345&email=john@go.com";
      //Split across all instances of the 'and' symbol
      String[] keyValueConcat = all.split("&");
      Map<String, String> kvPairs = new HashMap<String, String>();
      for (String concat : keyValueConcat) {
          if (concat.contains("=") {
              //For any string in the split that contains an equals sign
              //Split over the equals sign and add to the map
              String[] keyValueSplit = concat.split("=", 2);
              kvPairs.put(keyValueSplit[0], keyValueSplit[1];
          }
      }
      

      并且地图 kvPairs 应该包含您需要的内容。

      【讨论】:

        【解决方案5】:

        您可以为此使用StringTokenizer(或)String.split

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-07
          • 2010-09-16
          • 2014-07-01
          相关资源
          最近更新 更多