将txt转换为字符串不工作

Convert txt to string is not working

本文关键字:工作 字符串 txt 转换      更新时间:2023-09-26

我有一个节点应用程序,在一个文件夹里我有一个文本文件(长…),内容如下

BASH=/bin/sh
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=([0]="0")
BASH_VERSINFO=([0]="3" [1]="2" [2]="51" [3]="1" [4]="release" )
BASH_VERSION='3.2.2(1)-release'
CF_INSTANCE_ADDR=10.2.7:501
CF_INSTANCE_INDEX=0
CF_INSTANCE_IP=10.97.27.7
CF_INSTANCE_P='[{external:500,internal:501}]'
COLUMNS=80 

我用fs.readFile读取txt文件内容我需要更新一些属性所以我想将其解析为json但这不起作用

我的问题是:

  1. 我应该解析为json吗?为了修改一些属性值例如

CF_INSTANCE_ADDR=10.2.7:501

CF_INSTANCE_ADDR=11.3.8:702

CF_INSTANCE_P='[{external:500,internal:501}]'

CF_INSTANCE_P='[{external:100,internal:200}]'

等等……有更好的方法吗?

这是我尝试过的

fs.readFile(filePath, 'utf8').then(function (response) {
       var aa =  JSON.stringify(response);
       //console.log(aa);
        var bb = JSON.parse(aa);
        console.log(bb);
        return response;
    }

您可以将字符串转换为对象,然后您可以决定如何继续/整理数据:

var obj = {};
str.split(/'n/g).forEach(function (el) {
  var spl = el.split('=');
  obj[spl[0]] = spl[1];
});

演示所以你应该剩下一个对象叫做obj:
var obj = {
  "BASH": "/bin/sh",
  "BASH_ARGC": "()",
  "BASH_ARGV": "()",
  "BASH_LINENO": "([0]",
  "BASH_VERSINFO": "([0]",
  "BASH_VERSION": "'3.2.2(1)-release'",
  "CF_INSTANCE_ADDR": "10.2.7:501",
  "CF_INSTANCE_INDEX": "0",
  "CF_INSTANCE_IP": "10.97.27.7",
  "CF_INSTANCE_P": "'[{external:500,internal:501}]'",
  "COLUMNS": "80"
}

您现在可以使用点或括号表示法访问每个键的值:

obj.BASH_VERSION // '3.2.2(1)-release'
obj['BASH_VERSION'] // '3.2.2(1)-release'

这里我将删除BASH_VERSION:

中的单引号
obj.BASH_VERSION = obj.BASH_VERSION.replace("'", "");