Вопрос-ответ

A quick and easy way to join array elements with a separator (the opposite of split) in Java [duplicate]

Быстрый и простой способ объединить элементы массива с помощью разделителя (противоположного split) в Java

Смотрите Связанный вопрос по .NET

Я ищу быстрый и простой способ сделать в точности противоположное split, чтобы это привело к ["a","b","c"] превращению "a,b,c"

Для выполнения итерации по массиву требуется либо добавить условие (если это не последний элемент, добавьте разделитель), либо использовать substring для удаления последнего разделителя.

Я уверен, что есть сертифицированный и эффективный способ сделать это (Apache Commons?)

Как вы предпочитаете делать это в своих проектах?

Переведено автоматически
Ответ 1

Используя Java 8, вы можете сделать это очень простым способом:

String.join(delimiter, elements);

Это работает тремя способами:

1) прямое указание элементов

String joined1 = String.join(",", "a", "b", "c");

2) использование массивов

String[] array = new String[] { "a", "b", "c" };
String joined2 = String.join(",", array);

3) использование iterables

List<String> list = Arrays.asList(array);
String joined3 = String.join(",", list);
Ответ 2

Если вы используете Android, вы можете TextUtils.join(delimiter, tokens)

Ответ 3

Для решения этой конкретной проблемы я предпочитаю Guava, а не Apache StringUtils:

Joiner.on(separator).join(array)

По сравнению со StringUtils, Joiner API имеет свободный дизайн и немного более гибкий, например, null элементы могут быть пропущены или заменены заполнителем. Также, Joiner имеет функцию для объединения карт с разделителем между ключом и значением.

Ответ 4

ВApache Commons Lang действительно есть StringUtils.join метод, который соединит String массивы вместе с помощью указанного разделителя.

Например:

String[] s = new String[] {"a", "b", "c"};
String joined = StringUtils.join(s, ","); // "a,b,c"

Однако я подозреваю, что, как вы упомянули, в реальной реализации вышеупомянутого метода должна быть какая-то обработка условий или подстрок.

Если бы я должен был выполнить String объединение и у меня не было других причин использовать Commons Lang, я бы, вероятно, внедрил свой собственный, чтобы уменьшить количество зависимостей от внешних библиотек.

java arrays string