数组到字符串包含逗号' s - JavaScript

时间:2014-02-17 13:14:00

标签: javascript jquery arrays

好的所以我正在编写一个包含完整句子的脚本,但整个句子可以包含逗号。

由于脚本的工作方式,数组必须至少转换为一次字符串。 因此,当发生这种情况时,一旦我将字符串拆分回原始值,逗号就会开始相互冲突。

我无法弄清楚如何解决这个问题,到目前为止我一直在寻找并没有成功。

我正在使用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"];

2 个答案:

答案 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.parseJSON.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"]