【问题标题】:Javascript replace two double quotes with single double quotes of ArrayJavascript用Array的单双引号替换两个双引号
【发布时间】:2020-10-01 07:16:35
【问题描述】:

CSV 文件数据

"Name", "OfcLocation", "IPAddress", "Port" ,"Role"
"Tom", "USA",  "XX.XXX.X.XX", "4300", "Admin"
"Mark", "Spain", "XX.XXX.X.XX", "4080", "Limited"
"Jack", "Japan", "XX.XXX.X.XX", "9200", "Admin"

我正在阅读 CSV 文件。我使用 npm 包 ngx-parser 来读取 csv 文件。读取 csv 文件后,它的返回数据格式如下。

const response:any[];


[""Name"", ""OfcLocation"", ""IPAddress"", ""Port"" ,""Role""],
[""Tom"", ""USA"",  ""XX.XXX.X.XX"", ""4300"", ""Admin"" ]
[ ""Mark"", ""Spain"", ""XX.XXX.X.XX"", ""4080"", ""Limited"" ]
[ ""Jack"", ""Japan"", ""XX.XXX.X.XX"", ""9200"", ""Admin"" ]

我尝试用单引号替换两个双引号

let jData = JSON.stringify(response).replace(/""/g,'"');

再次尝试转换为 JSON

let parseData = JSON.parse(jData);

得到错误 Uncaught SyntaxError: Unexpected token \ in JSON。 基本上,我想要这样的数据,用单引号替换两个双引号

["Name", "OfcLocation", "IPAddress", "Port" ,"Role"],
["Tom", "USA",  "XX.XXX.X.XX", "4300", "Admin" ]
[ "Mark", "Spain", "XX.XXX.X.XX", "4080", "Limited" ]
[ "Jack", "Japan", "XX.XXX.X.XX", "9200", "Admin" ]

【问题讨论】:

  • 只是为了确认一下,它目前是一个数组,数组是正确的,每个值都以"开头并以"结尾?
  • 是的,预期的数组项值应以(单双引号)" 开头并以 " 结尾。
  • 你能显示产生这个结果的原始 CSV 吗?
  • 你能分享你的 csv 文件吗?
  • 你试过在 ngxCsvParser.parse({header: true}) 中使用 header 为 true 吗????

标签: javascript json typescript


【解决方案1】:

我正在更改我的答案首先你必须对你的响应进行字符串化,然后你必须像这样替换那个字符串..

如果 stringify 不起作用,那么像这样更改对字符串的响应 let string= `${your response data here}` 然后替换

let string = `[""Name"", ""OfcLocation"", ""IPAddress"", ""Port"" ,""Role""],[""Tom"", ""USA"",  ""XX.XXX.X.XX"", ""4300"", ""Admin"" ][ ""Mark"", ""Spain"", ""XX.XXX.X.XX"", ""4080"", ""Limited"" ][ ""Jack"", ""Japan"", ""XX.XXX.X.XX"", ""9200"", ""Admin"" ]`

let myString = string.replace(/""/g, '"');

console.log(myString)

【讨论】:

  • 没错,但 csv 文件来自其他应用程序。所以我不能改变 csv 的格式
  • 场景是,我们将从一些应用程序中将数据导出为 CSV 格式。之后,我们将上传到我们的应用程序并读取它并进行操作。
  • 来自应用程序 Web UI
  • 你能分享你从网页界面获取的数据格式吗???
  • 已更新有问题"Name", "OfcLocation", "IPAddress", "Port" ,"Role" "Tom", "USA", "XX.XXX.X.XX", "4300", "Admin" "Mark", "Spain", "XX.XXX.X.XX", "4080", "Limited" "Jack", "Japan", "XX.XXX.X.XX", "9200", "Admin"
【解决方案2】:

当您以字符串化 json 形式返回响应时,这些引号将像这样被反斜杠:

"[{\"Name\":\"OfcLocation\",\"IPAddress\":\"Port\"}]"

你是说当你得到你的结果时,它们看起来像这样? 这看起来很奇怪。

"[{\"\"Name\"\":\"\"OfcLocation\"\",\"\"IPAddress\"\":\"\"Port\"\"}]"

好的,在这样的引用之前使用反斜杠可能会有所帮助。

response.replace(/\"\"/g,'"');

如果这不起作用,请测试您的 stringify 方法是否确实返回了有效字符串。

您可以在此处尝试验证您的 json:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多