Каков хороший способ создать строку, разделенную символами, из коллекции? - PullRequest
2 голосов
/ 11 мая 2011

Время от времени мне нужно создавать строку, разделенную символами, во время цикла по коллекции. Хотите верьте, хотите нет, но всегда стоит первый или последний символ-разделитель! :) Обычно я заканчиваю тем, что отрезаю лишний символ, который является еще одной строкой кода. Я мог бы уйти с этим, но из любопытства, есть ли у кого-нибудь крутой "смуглый" способ сделать это? (в C # и / или JavaScript)

Пример:

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

После построения строки, разделенной запятыми, мы получаем:

"Joe, Jane, Jim, " или ", Joe, Jane, Jim"

Ищете классный способ построить

"Joe, Jane, Jim"

без какой-либо строки «обрезки» после.

Ответы [ 5 ]

2 голосов
/ 11 мая 2011

В большинстве языков есть функция join или implode, которая будет принимать коллекцию или массив или что-то еще и "соединяет" элементы этого массива со строкой по вашему выбору.

Javascript:

array.join(',')

c #:

String.Join(',', array);
2 голосов
/ 11 мая 2011

В 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 голос
/ 11 мая 2011

В Javascript, если ваша коллекция представляет собой массив, вы можете вызвать для него функцию соединения:

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

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

ул тут даст:

"Joe, Jane, Jim"
0 голосов
/ 11 мая 2011

Если у вас есть массив, вы можете просто 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;
}
0 голосов
/ 11 мая 2011

Не так хорошо, как ответ Марка Костелло, но это работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...