2014-09-12 5 views
2

Вопрос прост. Я ищу простой и эффективный способ объединения массива строк (или массивов любого другого типа, если это так, поскольку строки являются псевдонимом для char[]) с дополнительным разделителем.Присоединитесь к массиву строк

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

Так вместо того, чтобы что-то вроде этого:

string merge (const string arr[] , const string separator) { 
    if (arr.length == 0) return ""; 
    string r = arr[0]; 
    for (int i = 1 ; i < arr.length ; i++) { 
     r ~= separator ~ arr[i]; 
    } 
    return r; 
} 

Что бы опытный программист D делать?

+3

['std.array.join'] (http://dlang.org/phobos/std_array.html#.join)? –

ответ

3

Я не программист D, но я взломаю его, справочник библиотеки has a join method.

Из документов:

const string[] arr = ["apple", "banana"]; 
assert(arr.join(",") == "apple,banana"); 
assert(arr.join() == "applebanana"); 
+0

Действительно, я, должно быть, пропустил эту функцию. Отлично. :) –

+3

Сложная вещь с D-строками - это не все, что особенное, они массивы и stdlib старается быть общим, поэтому многие их функции находятся в 'std.array' или' std.algorithm'. Но если вы импортируете эти два, а также 'std.string', вы, вероятно, найдете для вас также функции класса строк другого языка. –

3

Смотрите также std.algorithm.joiner для версии, которая является ленивым и не выделяет память.

Смежные вопросы