使用JS/NodeJS测试并读取文件中的变量

Test and read variables from file with JS/NodeJS

本文关键字:文件 变量 读取 JS NodeJS 测试 使用      更新时间:2023-09-26

我正在创建一个能够读取环境文件的脚本。内容可以如下:

var1 = 'test'
var2='test2'
var1= 'test'
var3 = 4

我想提取密钥和值,例如:

var1 = 'test' -> result[0]: var1, result[1]: test

如何编写一个函数来测试用readFile读取的行是否有效,然后测试其key(例如var1)和value(例如test)?是否可以在不运行两个regexp函数的情况下使用regexp提取键和值?

一旦存储了行,就可以执行以下操作:

// line is the line you are processing, object is where you save your stuff
function processLine(line, object) {
    var parts = line.split("=");
    if (parts.length<2)
         return;
    // key is parts[0], value is parts[1]
    var key = parts.shift();
    // if we have equal signs in our value, they will be preserved
    var value = parts.join("=");
    // get rid of any trailing or preceding spaces
    key = key.trim();
    value = value.trim();
    // is the value a quoted string?
    if ((value.charAt(0)==="'" && value.charAt(value.length-1)==="'") ||
        (value.charAt(0)==='"' && value.charAt(value.length-1)==='"'))
        value = value.slice(1, value.length-1);
    // otherwise we assume it's a number
    else
        value = parseFloat(value);
    // TODO: you can check for other stuff here, such as 'true', 'false' and 'null'
    // finally, assign it to your object
    object[key] = value;
}

现在你只需要为每一行调用你的函数,例如:

var values = {};
for (var i in lines)
    processLine(lines[i], values);

这种方法的注意事项很多。通过一些额外的代码可以很容易地修复它们,但我建议使用JSON之类的东西来定义配置值(如果它们就是这样的话)。javascript中有对JSON解析的本地支持,所以您可以直接使用它。也许你应该重新考虑你的方法。

您可以尝试以下JS代码:

function validate(str)
{
  var re = /^('w+)'s*'='s*(['"]?)(.*?)'2$/;
  if ((m = re.exec(str)) !== null) {
       return [m[1], m[3]];
    }
}
document.getElementById("res").innerHTML = 
  "Result [0]: " + validate("var1 = 'test'")[0] + "<br>Result [1]: " + validate("var1 = 'test'")[1];
<div id="res"/>

  • 读这行。。用空替换引号

    //line = "var1 = 'test'";
    line = line.replace(/'/g, "");
    
  • 按分隔符= 拆分

    var result = line.split("="); 
    //result is an array containing "var1" and "test"
    

line = "var1 = 'test'";
line = line.replace(/'/g, "");
var result = line.split("="); 
document.write("key => "+result[0].trim());
document.write(": value => "+result[1].trim());