每隔一段时间,我需要在循环遍历集合时构建一个字符分隔的字符串。信不信由你,总会有第一个或最后一个分隔符阻碍它! :)通常,我最终砍掉额外的字符,这是另一行代码。我可以离开,但出于好奇,有没有人有任何很酷的“smooooth”方式这样做? (在C#和/或JavaScript中)
示例:
{"Joe", "Jane", "Jim"}
在构建逗号分隔字符串后,我们得到:
"Joe, Jane, Jim, "
或", Joe, Jane, Jim"
寻找一种很酷的构建方式
"Joe, Jane, Jim"
之后没有任何字符串“砍”。
答案 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)
大多数语言都有一个join
或implode
函数,它将采用一个集合或数组,或者您将使用您选择的字符串“加入”该数组的元素。
使用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;
}