2011-05-10 99 views
2

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

例子:

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

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

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

寻找建立

一个很酷的方式
"Joe, Jane, Jim" 

没有任何字符串“切碎”后。

+0

我一直认为必须有一个更清洁的方式,但我想砍的最后一个字符关闭是相当有效,因为你不必检查每一个迭代。或者循环遍历除最后一个,然后追加最后一个。 – 2011-05-10 22:03:40

+0

@E Ronnoco - 同意。我宁愿有一行“砍”的代码,而不是一个讨厌的if语句在它的中间:) – Dimskiy 2011-05-10 22:12:09

回答

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]; 
} 
+0

但我不知道'.join()'的工作原理...... :) – 2011-05-11 09:06:00

1

在Javascript中,如果您的集合是一个数组,你可以调用它的连接功能:在这里

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

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

海峡会给:

"Joe, Jane, Jim" 
2

大多数语言都有一个joinimplode功能,将采用一个集合或数组或者你所拥有的,并且将用你选择的字符串'连接'该数组的元素。

的Javascript:

array.join(',') 

C#:

String.Join(',', array); 
0

还不如马克·科斯特洛的回答为好,但this工作

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; 
}