将括号中有索引的字符串转换为JSON数组
Convert string with index in brackets to JSON array
我有各种字符串,括号中有数字,如"[4]Motherboard, [25]RAM"
,我如何将这样的字符串转换为JSON数组(保持id和值),如:
{"data":[
{"id":"4","item":"Motherboard"},
{"id":"25","item":"RAM"}
]};
我尝试使用split(",")
来创建数组,但我真的找不到如何在这种情况下获得内部数据。
您可以使用正则表达式,它接受数字和字符串,并将其作为属性赋值给对象。
var string = "[4]Motherboard, [25]RAM",
data = string.split(', ').map(function (a) {
var p = a.match(/^'[('d+)'](.+)$/);
return { id: p[1], item: p[2] };
});
console.log(data);
这里有一种方法。模式'[('d+?)'](.+)
是这样工作的:
-
(…)
为捕获组。这意味着括号内的任何匹配都将是结果中的一个令牌。 -
'd
表示数字 -
'd+
表示一个数字,一次或多次 -
'd+?
表示一个数字,一次或多次,但在模式匹配其他内容之前尽可能少。 -
.+
表示任何字符,一次或多次。
[
和]
在正则表达式中有特殊的含义,所以如果你真的想匹配字符本身,你需要像'[
和']
那样对转义。
双反斜杠''
在通过字符串定义正则表达式而不是使用/literal/
时只是JS的一个奇怪现象。这是同一件事的两种说法。
有很多学习regex语法的资源,http://regex101.com是一个玩模式和实验的好地方。
var input = "[4]Motherboard, [25]RAM";
var pattern = '''[(''d+?)''](.+)';
var result = input.split(',').map(function (item) {
var matches = item.match(new RegExp(pattern));
return {id: matches[1], val: matches[2]};
});
console.log(result)
function toArray(string) {
return {
data: string.split(",").map(function(str) {
str = str.trim();
return {
id: str.substring(1, str.indexOf("]")),
item: str.substring(str.indexOf("]") + 1),
};
}),
};
}
相关文章:
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 将JSON插入MongoDB中,自动转换字符串中的日期
- 以点表示法转换字符串以获取对象引用
- 在 JavaScript 中转换字符串 11/28/2014 11:00 AM 到现在
- 为什么在主干的字符串数组中转换字符串数组
- 如何简单地转换字符串
- AngularJS如何转换字符串“;yyyyMMdd”;迄今为止
- 如何防止htmlspecialchar(PHP)转换字符串中的整数
- 刷新Aurelia中的i18n转换字符串插值
- 发布时禁用转换字符串
- 转换字符串货币
- 在javascript ajax调用中转换字符串到数组
- 转换字符串包含时间到24小时的时间,我可以做数学与- jQuery
- IE javascript引擎在转换字符串到日期时呈现NaN
- 如何转换字符串“a,b,c,d……”成a.b (c, d . .);来执行
- 如何在javascript中转换字符串到日期格式
- 如何在嵌套数组中转换字符串数组
- 在javascript中转换字符串日期
- 转换字符串在印度格式的javascript
- Javascript转换字符串到数组的对象