【问题标题】:Extracting repeating attributes from one continuous string从一个连续字符串中提取重复属性
【发布时间】:2011-06-16 10:40:02
【问题描述】:

我有一个字符串有两种分隔符。

String X = "20001=EDTS~^20002=USA~^20003=1170871875~^20004=1~^20005=0~^773=~^665=~^453=2~^448=0A~!447=D~!452=1~!~^448=0A~!447=D~!452=17~!~^11=001111652533408~^";

~^ 表示孤值

其中~! 表示值组。

448=0A~!447=D~!452=1~!~^448=0A~!447=D~!452=17~!~^

以前我假设没有重复的数据组,只是根据键等于标签号映射到映射。但是,这不适用于重复组,因为它们会覆盖。

EDIT 我想从此字符串中获取值并将它们映射到不同的对象属性。基本上左边的数字是指一个标签,值就是值。所以标记 20002=USA,我需要将值 USA 映射到我的新对象中的一个属性。无效值只是默认值,因此标记它们已被分配但未获得值

现在,我正在努力思考一种更好的方法来映射数据和组。维护标签和与之关联的值。

【问题讨论】:

  • 我认为您可能想澄清如何解释您的字符串。 “=”是什么意思?
  • 基本上左边的数字是指一个标签,值就是值。所以标记 20002=USA,我需要将值 USA 映射到我的新对象中的一个属性。无效值只是默认值,因此标记它们已被分配但未获得值。
  • 一组映射到同一标签的值。我得到了一个字符串消息,我必须从中取出值。
  • @Will 那会是什么标签? 448=0A~!447=D~!452=1~! 中的值应该映射到什么标签?
  • 你想得太封闭了。我希望能够从任何标签中获取任何值并将其映射到我的新对象中的属性。

标签: java data-structures string map


【解决方案1】:

Eek...糟糕的数据格式。 JSON 会更漂亮。 URL 编码的参数字符串也会更好。如果发生这种情况,两者都允许任意嵌套组。

但也许是这样的?

String groupDelim="~!";
String entryDelim="~^";
String pairDelim="=";

String[] groups = X.split(groupDelim);
int groupId = 0;
for(String group:groups){
   String entries = group.split(entryDelim);
   int entryId = 0;
   for(String entry:entries){
      String[] pair = entry.split(pairDelim);
      /* now do stuff with */
      groupId; // for sort order if it matters
      entryId; // for sort order if it matters
      String key = pair[0];
      String value = pair[1]; 
      entryId++;
   }
   groupId++;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2019-05-21
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多