连接多个字符串的最佳方法?

时间:2018-07-03 13:59:11

标签: javascript json

我有一个项目,用户可以在其中输入可以选择的下拉值。一次可以选择多个值。因此,我们必须存储选择并使其处于编辑模式。

第一个想法

让我们将它们存储为逗号分隔的DB。

f.e。 如果建议是A,B,C,并且用户选择A和B,则我打算将A,B存储在DB中,同时取回值时用逗号将其拆分。

当用户在字段中有真正的“逗号”时,例如第一个选项第二个选项,就会出现问题。那时用逗号加入是行不通的。

第二个想法

我可以想到另一种选择,将其存储为字符串数组格式并在返回时进行解析。

对于上述实例,它将数据存储为[“ first,option”,“ second,option”]。对我来说,这似乎是一个不错的选择。

尽管我有点犹豫(这使我在这里提出疑问!),因为我的用户可以直接访问api / DB值,但对于他们来说,它看起来并不好。

那么,还有没有其他方法可以解决此问题,使双方,开发人员和用户都受益?在此先感谢!

2 个答案:

答案 0 :(得分:0)

我建议使用JSON,XML等标准化格式。

序列化和解析,并使用广泛使用的库,因此可以为您完成保留/特殊字符的所有转义。在这里滚动自己会引起问题!

更好的是,对每个建议使用不同的字段,通常这是一个更好的设计。只要势场的数量是有限的,这将起作用,例如1-10条建议。

如果您要沿JSON路线走,我们可以在JavaScript中执行以下操作:

let suggestions = ['Choice A, commas are not, a problem, though punctuation is.', 'Choice B', 'Choice C'];
let json = JSON.stringify(suggestions);

// Save to DB
saveToDB(json);


let jsonFromDB = loadFromDB();

let deserializedSuggestions = JSON.parse(jsonFromDB);
console.log(deserializedSuggestions);

答案 1 :(得分:0)

我们在当前项目中使用分号(;)

因此,根据您的问题,它们将以option1;option2;option3的形式存储在数据库中

,当我们从数据库取回它时,可以在它上使用split()方法将其转换为子字符串数组。

var str = "option1;option2;option3";
var res = str.split(";");
console.log(res);

这将导致控制台中出现(3) ["option1", "option2", "option3"]

希望这会有所帮助。