Javascript 使用值修改特定文本
我用readFile方法读取了一个文本文档,得到了当前字符串。 我需要修改其中的一些特定字段,保存文件并保持原始格式 在读取的文件中,我得到了以下“字符串” 我只需要更改属性的编号Javascript 使用值修改特定文本,javascript,regex,Javascript,Regex,我用readFile方法读取了一个文本文档,得到了当前字符串。 我需要修改其中的一些特定字段,保存文件并保持原始格式 在读取的文件中,我得到了以下“字符串” 我只需要更改属性的编号 端口=4000 应用程序端口=4000 我使用的是fs.readFile(filePath,'utf8'),响应是这个文件您可以将其修改为一个对象,设置值,然后使用以下命令返回字符串: var rawValues=“\r\nAPP\u HOST=mo-d6fa.corp\r\nAPP\u PORT=5000\r\n
我使用的是
fs.readFile(filePath,'utf8')
,响应是这个文件您可以将其修改为一个对象,设置值,然后使用以下命令返回字符串:
var rawValues=“\r\nAPP\u HOST=mo-d6fa.corp\r\nAPP\u PORT=5000\r\nINS\u PORT=50100\r\nPORT=66000\r\n”;
//#1您需要使用string.prototype.split将原始字符串转换为数组
//#2是时候将数组缩减为能够访问的对象了
//将值配置为键值对存储
var values=rawValues.trim().split(“\r\n”).reduce(
函数(结果、下一步、索引、sourceArray){
var keyValuePair=sourceArray[index].split(“=”);
结果[keyValuePair[0]]=keyValuePair[1];
返回结果;
}, {});
//现在,您可以像更改字典一样更改配置值:
值[“端口”]=“9995”;
值[“应用程序端口”]=“9999”;
//如果可能的设置具有有效的JavaScript,则使用点语法
//变量名。。。
values.PORT=“9995”;
values.APP_PORT=“9999”;
//…更多设置。。。
//#3一旦编辑了设置,就应该减少每个属性
//作为包含所有配置的新原始字符串的一部分。
rawValues=Object.keys(values).reduce(函数(previousValue、属性、索引){
previousValue+=属性+“=”+值[属性]+“\r\n”;
返回以前的值;
}, "");
//现在PORT和APP_PORT包含了它们的新值。。。
document.getElementById(“rawResult”).textContent=JSON.stringify(rawValues)代码>
您可以将其修改为对象,设置值,然后使用以下命令返回字符串:
var rawValues=“\r\nAPP\u HOST=mo-d6fa.corp\r\nAPP\u PORT=5000\r\nINS\u PORT=50100\r\nPORT=66000\r\n”;
//#1您需要使用string.prototype.split将原始字符串转换为数组
//#2是时候将数组缩减为能够访问的对象了
//将值配置为键值对存储
var values=rawValues.trim().split(“\r\n”).reduce(
函数(结果、下一步、索引、sourceArray){
var keyValuePair=sourceArray[index].split(“=”);
结果[keyValuePair[0]]=keyValuePair[1];
返回结果;
}, {});
//现在,您可以像更改字典一样更改配置值:
值[“端口”]=“9995”;
值[“应用程序端口”]=“9999”;
//如果可能的设置具有有效的JavaScript,则使用点语法
//变量名。。。
values.PORT=“9995”;
values.APP_PORT=“9999”;
//…更多设置。。。
//#3一旦编辑了设置,就应该减少每个属性
//作为包含所有配置的新原始字符串的一部分。
rawValues=Object.keys(values).reduce(函数(previousValue、属性、索引){
previousValue+=属性+“=”+值[属性]+“\r\n”;
返回以前的值;
}, "");
//现在PORT和APP_PORT包含了它们的新值。。。
document.getElementById(“rawResult”).textContent=JSON.stringify(rawValues)代码>
您可以将其修改为对象,设置值,然后使用以下命令返回字符串:
var rawValues=“\r\nAPP\u HOST=mo-d6fa.corp\r\nAPP\u PORT=5000\r\nINS\u PORT=50100\r\nPORT=66000\r\n”;
//#1您需要使用string.prototype.split将原始字符串转换为数组
//#2是时候将数组缩减为能够访问的对象了
//将值配置为键值对存储
var values=rawValues.trim().split(“\r\n”).reduce(
函数(结果、下一步、索引、sourceArray){
var keyValuePair=sourceArray[index].split(“=”);
结果[keyValuePair[0]]=keyValuePair[1];
返回结果;
}, {});
//现在,您可以像更改字典一样更改配置值:
值[“端口”]=“9995”;
值[“应用程序端口”]=“9999”;
//如果可能的设置具有有效的JavaScript,则使用点语法
//变量名。。。
values.PORT=“9995”;
values.APP_PORT=“9999”;
//…更多设置。。。
//#3一旦编辑了设置,就应该减少每个属性
//作为包含所有配置的新原始字符串的一部分。
rawValues=Object.keys(values).reduce(函数(previousValue、属性、索引){
previousValue+=属性+“=”+值[属性]+“\r\n”;
返回以前的值;
}, "");
//现在PORT和APP_PORT包含了它们的新值。。。
document.getElementById(“rawResult”).textContent=JSON.stringify(rawValues)代码>
您可以将其修改为对象,设置值,然后使用以下命令返回字符串:
var rawValues=“\r\nAPP\u HOST=mo-d6fa.corp\r\nAPP\u PORT=5000\r\nINS\u PORT=50100\r\nPORT=66000\r\n”;
//#1您需要使用string.prototype.split将原始字符串转换为数组
//#2是时候将数组缩减为能够访问的对象了
//将值配置为键值对存储
var values=rawValues.trim().split(“\r\n”).reduce(
函数(结果、下一步、索引、sourceArray){
var keyValuePair=sourceArray[index].split(“=”);
结果[keyValuePair[0]]=keyValuePair[1];
返回结果;
}, {});
//现在,您可以像更改字典一样更改配置值:
值[“端口”]=“9995”;
值[“应用程序端口”]=“9999”;
//如果可能的设置具有有效的JavaScript,则使用点语法
//变量名。。。
values.PORT=“9995”;
values.APP_PORT=“9999”;
//…更多设置。。。
//#3一旦编辑了设置,就应该减少每个属性
//作为包含所有配置的新原始字符串的一部分。
rawValues=Object.keys(values).reduce(函数(previousValue、属性、索引){
previousValue+=属性+“=”+值[属性]+“\r\n”;
返回以前的值;
}, "");
//现在PORT和APP_PORT包含了它们的新值。。。
document.getElementById(“rawResult”).textContent=JSON.stringify(rawValues)代码>
这两个函数的正则表达式非常相似。这里有一个刺:
var portRegex = /\nPORT=\d+/g;
var appPortRegex = /\nAPP_PORT=\d+/g;
var fileStr = fs.readFile(filePath, 'utf8');
fileStr = fileStr
.replace(portRegex, '\nPORT=' + 4000)
.replace(appPortRegex, '\nAPP_PORT=' + 4000);
这两个的正则表达式都是
var portRegex = /\nPORT=\d+/g;
var appPortRegex = /\nAPP_PORT=\d+/g;
var fileStr = fs.readFile(filePath, 'utf8');
fileStr = fileStr
.replace(portRegex, '\nPORT=' + 4000)
.replace(appPortRegex, '\nAPP_PORT=' + 4000);
/^(PORT\s*=\s*)\d+/m
/^(APP_PORT\s*=\s*)\d+/m