将字符串拆分为键值对

新手上路,请多包涵

如果匹配 key: value ,我想用逗号分隔以下字符串。按逗号拆分一直有效,直到在 value 中遇到逗号为止

const string = "country: Kenya, city: Nairobi, population: 3.375M, democracy-desciption: Work in progress/ Not fully met, obstacles exist"

我想以这个结果结束:

 [[country: Kenya],
[city: Nairobi],
[population: 3.375M],
[democracy-description: Work in progress/ Not fully met, obstacles exist]]

先感谢您。

原文由 Nate 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 459
2 个回答

您可以通过查看是否后面没有逗号和冒号来拆分字符串。

 var string = "country: Kenya, city: Nairobi, population: 3.375M, democracy-desciption: Work in progress/ Not fully met, obstacles exist, foo: bar, bar, bar";

console.log(string.split(/, (?=[^,]+:)/).map(s => s.split(': ')));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

原文由 Nina Scholz 发布,翻译遵循 CC BY-SA 3.0 许可协议

拆分为键值对字符串数组,然后通过拆分每一对将该数组映射到数组数组:

 const table =
 string.split(",") //["key:value","key:value"]
  .map(pair => pair.split(":")); //[["key","value"],["key","value"]]

要从中构建一个对象:

 const result = Object.fromEntries(table);

//usable as:
console.log( result.country );

或使用地图:

 const result = new Map(table);

//usable as:
console.log( result.get("country") );

原文由 Jonas Wilms 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题