如何在 javascript 中使用正则表达式将项目及其值放入数组中?
这是我的数据样本:
battery.voltage: 13.50
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_ser
driver.parameter.pollinterval: 2
谢谢
如何在 javascript 中使用正则表达式将项目及其值放入数组中?
这是我的数据样本:
battery.voltage: 13.50
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_ser
driver.parameter.pollinterval: 2
谢谢
为什么要使用正则表达式,你可以简单地使用substr
and indexOf
。假设您将列表存储在一个数组中,您可以简单地遍历条目并在第一次出现冒号时拆分。
var items = [...]; // Your items.
var arr = {};
for (var i = items.length - 1; i >= 0; i--) {
var key = items[i].substr(0, items[i].indexOf(':'));
var value = items[i].substr(items[i].indexOf(':') + 1).trim();
arr[key] = value;
}
此解决方案仅适用于实现该trim
方法的浏览器。如果你想在保存端,你可以覆盖String.prototype
并添加修剪方法。(请参阅在 JavaScript 中修剪字符串?)
split
如果您将项目作为由换行符分隔的字符串,则可以通过;轻松地将其拆分为数组。
var list = "battery.voltage: 13.50\n"
+ "battery.voltage.nominal: 12.0\n"
+ "beeper.status: enabled\n"
+ "device.type: ups\n"
+ "driver.name: blazer_ser\n"
+ "driver.parameter.pollinterval: 2";
var items = list.split(/\n/);
使用下面的代码来做到这一点......这里变量data
包含你的数据......
data=data.split(/\n+/);
var output={};
for(var i=0;i<data.length;i++){
var a=data[i].split(/:\040+/);
output[a[0]]=a[1];
}
这些代码将为您提供如下所示的数组...
Array (
battery.voltage: "13.50",
battery.voltage: "12.0",
beeper.status: "enabled",
device.type: "ups",
driver.name: "blazer_ser",
driver.parameter.pollinterval: "2"
)
例子:
output['driver.name'] === "blazer_ser"
这是一个解决方案,它只使用单个正则表达式通过字符串数据:
var list = "battery.voltage: 13.50\n"
+ "battery.voltage.nominal: 12.0\n"
+ "beeper.status: enabled\n"
+ "device.type: ups\n"
+ "driver.name: blazer_ser\n"
+ "driver.parameter.pollinterval: 2";
function parse(data) {
var match, result = {};
var pattern = /\s*([^:\s]+)\s*:\s*([^:\s]+)$/gm;
while (match = pattern.exec(data)) {
result[match[1]] = match[2];
}
return result;
}
var test = parse(list);
// dump array
for (var i in test)
console.log(i + ": " + test[i]);
// select one
console.log(test["driver.parameter.pollinterval"]);