如果一个字符串包含.ini文件数据,我该如何在JavaScript中解析它? 有没有任何JavaScript解析器会在这方面提供帮助?包含.ini数据的字符串的javascript解析器
这里,通常字符串包含读取配置文件后的内容。 (阅读无法通过JavaScript来实现,但不知何故,我收集在一个字符串的.ini信息。)
如果一个字符串包含.ini文件数据,我该如何在JavaScript中解析它? 有没有任何JavaScript解析器会在这方面提供帮助?包含.ini数据的字符串的javascript解析器
这里,通常字符串包含读取配置文件后的内容。 (阅读无法通过JavaScript来实现,但不知何故,我收集在一个字符串的.ini信息。)
我写inspirated javascript功能通过node-iniparser.js
function parseINIString(data){
var regex = {
section: /^\s*\[\s*([^\]]*)\s*\]\s*$/,
param: /^\s*([^=]+?)\s*=\s*(.*?)\s*$/,
comment: /^\s*;.*$/
};
var value = {};
var lines = data.split(/[\r\n]+/);
var section = null;
lines.forEach(function(line){
if(regex.comment.test(line)){
return;
}else if(regex.param.test(line)){
var match = line.match(regex.param);
if(section){
value[section][match[1]] = match[2];
}else{
value[match[1]] = match[2];
}
}else if(regex.section.test(line)){
var match = line.match(regex.section);
value[match[1]] = {};
section = match[1];
}else if(line.length == 0 && section){
section = null;
};
});
return value;
}
2017年5月10日更新:修复的错误键包含空格。
编辑:
这适用于我 - 感谢您发布它。需要注意的是,与大多数INI处理函数不同,此解析器返回的部分和设置区分大小写。 – dlchambers 2013-10-08 12:52:16
这不适用于包含空格的键 – m1alesis 2017-05-04 10:10:04
我修复了键空格的情况。你可以再试一次。 @ m1alesis – cuixiping 2017-05-10 09:00:23
这里有一个功能是谁能够从一个字符串解析INI数据的对象! (在客户端)
function parseINIString(data){
var regex = {
section: /^\s*\[\s*([^\]]*)\s*\]\s*$/,
param: /^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/,
comment: /^\s*;.*$/
};
var value = {};
var lines = data.split(/\r\n|\r|\n/);
var section = null;
for(x=0;x<lines.length;x++)
{
if(regex.comment.test(lines[x])){
return;
}else if(regex.param.test(lines[x])){
var match = lines[x].match(regex.param);
if(section){
value[section][match[1]] = match[2];
}else{
value[match[1]] = match[2];
}
}else if(regex.section.test(lines[x])){
var match = lines[x].match(regex.section);
value[match[1]] = {};
section = match[1];
}else if(line.length == 0 && section){
section = null;
};
}
return value;
}
这段代码真的很棒!有一个小错误(引用行是未定义的),我将其更改为行,它工作! “} else if(lines.length == 0 && section){” – 2015-12-03 07:15:01
你可以尝试config-ini-parser,它类似于蟒蛇ConfigParser没有I/O操作
它可以通过NPM或凉亭安装。这里有一个例子:
var ConfigIniParser = require("config-ini-parser").ConfigIniParser;
var delimiter = "\r\n"; //or "\n" for *nux
parser = new ConfigIniParser(delimiter); //If don't assign the parameter delimiter then the default value \n will be used
parser.parse(iniContent);
var value = parser.get("section", "option");
parser.stringify('\n'); //get all the ini file content as a string
更多的细节,你可以检查项目主要页面,或从npm package page
INI文件格式可能会有所不同,你刚才谈到换行分隔的键值的字符串对,还是有部分,评论等等...期望的输入和输出会很好 – 2010-10-06 06:42:22
是的,它包含部分,键值对,评论。 – sat 2010-10-06 06:44:44