从集合中构建字符分隔字符串的好方法是什么?

时间:2011-05-10 22:00:13

标签: javascript c#-4.0

每隔一段时间,我需要在循环遍历集合时构建一个字符分隔的字符串。信不信由你,总会有第一个或最后一个分隔符阻碍它! :)通常,我最终砍掉额外的字符,这是另一行代码。我可以离开,但出于好奇,有没有人有任何很酷的“smooooth”方式这样做? (在C#和/或JavaScript中)

示例:

{"Joe", "Jane", "Jim"}

在构建逗号分隔字符串后,我们得到:

"Joe, Jane, Jim, "", Joe, Jane, Jim"

寻找一种很酷的构建方式

"Joe, Jane, Jim"

之后没有任何字符串“砍”。

5 个答案:

答案 0 :(得分:2)

在Javascript中很简单:

var input = ["Joe", "Jane", "Jim"];

var str = input.join(','); // Output: Joe,Jane,Jim

大多数语言都有某种形式的“加入”内置或某些库:


顺便说一句,如果你正在编写这样一个函数,你应该只使用一个检查来在第一遍中不加前缀“胶水”,而不是在之后砍掉字符串:

var items = ["joe","jane","john"];
var glue = ",";
var s = "";
for (var i=0; i < items.length; i++) {
    if (i != 0) s += glue;
    s += items[i];
}

答案 1 :(得分:2)

大多数语言都有一个joinimplode函数,它将采用一个集合或数组,或者您将使用您选择的字符串“加入”该数组的元素。

使用Javascript:

array.join(',')

C#:

String.Join(',', array);

答案 2 :(得分:1)

在Javascript中,如果你的集合是一个数组,你可以在其上调用join函数:

var arr = ["Joe", "Jane", "Jim"]

var str = arr.join(",");

这里将给出:

"Joe, Jane, Jim"

答案 3 :(得分:0)

不如Mark Costello的答案好,但this有效

答案 4 :(得分:0)

如果你有一个数组,你可以arr.join(', ');。如果你的意思是一个对象({}),那么你必须迭代。

var str ='';
for (var x in obj) if (obj.hasOwnProperty(x))
    str += (str.length ? ', ' : '') + obj[x];

可能效率更高,但我怀疑这很重要。

var str ='', append = false;
for (var x in obj) if (obj.hasOwnProperty(x)) {
    str += (append ? ', ' : '') + obj[x];
    append = true;
}