好的所以我正在编写一个包含完整句子的脚本,但整个句子可以包含逗号。
由于脚本的工作方式,数组必须至少转换为一次字符串。 因此,当发生这种情况时,一旦我将字符串拆分回原始值,逗号就会开始相互冲突。
我无法弄清楚如何解决这个问题,到目前为止我一直在寻找并没有成功。
我正在使用chrome插件,这是发生的事情的一个小例子:
var Data = ["This is a normal string", "This string, will cause a conflict.", "This string should be normal"];
// The data gets sent to a background script, in string form and comes back as this
var Data = "This is a normal string, This string, will cause a conflict., This string should be normal";
Data = Data.split(",");
// Results in 4 positions instead of 3
Data = ["This is a normal string", "This string"," will cause a conflict.", "This string should be normal"];
答案 0 :(得分:4)
当您在数组上调用.join()
以将其转换为字符串时,您可以指定分隔符。
例如:
["Hello,","World"].join("%%%"); // "Hello,%%%World"
然后,您可以根据"%%%"
(.split("%%%")
)对其进行拆分,以便再次将其拆分。
也就是说,如果你想对一个数组的每个元素(每一行)应用一个动作,你可能不必再调用.join
然后.split
。相反,您可以使用数组方法,例如:
var asLower = ["Hello","World"].map(function(line){ return line.toLowerCase(); });
// as Lower now contains the items in lower case
或者,如果您的目标是序列化而不是处理 - 您不应该“推送自己的”序列化并使用内置的JSON.parse
和JSON.stringify
方法,例如h2oooooo建议。
答案 1 :(得分:3)
您可以使用JSON.stringify(array)
和JSON.parse(json)
来确保您输入的任何数组/对象都会返回完全相同(并且它也适用于布尔值,整数,浮点数等):< / p>
var data = ["This is a normal string", "This string, will cause a conflict.", "This string should be normal"];
// The data gets sent to a background script, in string form and comes back as this
data = JSON.stringify(data);
console.log(data);
// ["This is a normal string","This string, will cause a conflict.","This string should be normal"]
data = JSON.parse(data);
console.log(data);
// ["This is a normal string", "This string, will cause a conflict.", "This string should be normal"]