java - 从一个连续字符串中提取重复属性

标签 java data-structures string dictionary

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

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~!~^

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

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

现在我正在绞尽脑汁想出一种更好的方法来映射数据和组。维护标签和与之关联的值。

最佳答案

呃……错误的数据格式。 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++;
}

关于java - 从一个连续字符串中提取重复属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370512/

相关文章:

java - 如何声明 int 变量对我的所有方法都可见?

C++ - 无法从队列中删除元素

java - Java 中 TreeSet 的高度?

c++ - vector 字符串 push_back 在 C++ 中不起作用

java - 设置 JMS 连接的 URL

java - 参数化测试: selectively run for only one data point

algorithm - 建立交集图的线性时间复杂度算法

c - C中的越界二维数组错误

c - 如何在 C 中创建随机字符串数组?

java - JSP/Servlet Web 应用程序中的后台定时器任务