Существует ли прямой эквивалент в Java для str.join Python? [дубликат]

Возможные дубликаты:
Что лучший способ состоит в том, чтобы создать строку разграниченных объектов в Java?
Java: преобразуйте Список <Строка> в соединение () струна ре

В Java, учитывая набор, получая итератор и делая отдельный случай для первого (или в последний раз) отделились элемент и остальные для получения запятой, строка кажется довольно тусклой, есть ли что-то как str.join в Python?

Дополнительное разъяснение для предотвращения его закрываемый как дубликат: я не пользовался бы внешними библиотеками как Apache палата общин.

Спасибо!

обновите спустя несколько лет после этого...

Java 8 пришел на помощь

25
задан Community 23 May 2017 в 12:32
поделиться

5 ответов

Нет. Такого метода нет. Как и многие другие, я делал свои версии такого соединения для массивов строк и коллекций (итераторов).

4
ответ дан 28 November 2019 в 21:40
поделиться

Нет, нет. Вот моя попытка:

/**
 * Join a collection of strings and add commas as delimiters.
 * @require words.size() > 0 && words != null
 */
public static String concatWithCommas(Collection<String> words) {
    StringBuilder wordList = new StringBuilder();
    for (String word : words) {
        wordList.append(word + ",");
    }
    return new String(wordList.deleteCharAt(wordList.length() - 1));
}
15
ответ дан 28 November 2019 в 21:40
поделиться

Компромиссное решение между отказом от написания лишнего кода "utils" и неиспользованием внешних библиотек, которые я Нашел следующий двухстрочный :

/* collection is an object that formats to something like "[1, 2, 3...]"
  (as the case of ArrayList, Set, etc.)
  That is part of the contract of the Collection interface.
*/
String res = collection.toString();
res = res.substring(1, res.length()-1);
3
ответ дан 28 November 2019 в 21:40
поделиться

Нет в стандартной библиотеке. Она находится в StringUtils из commons lang.

0
ответ дан 28 November 2019 в 21:40
поделиться

В стандартной библиотеке ничего нет, но в Guava, например, есть Joiner который делает это.

Joiner joiner = Joiner.on(";").skipNulls();
. . .
return joiner.join("Гарри", null, "Рон", "Гермиона");
// возвращает "Гарри; Рон; Гермиона"

Однако вы всегда можете написать свой собственный, используя StringBuilder.

8
ответ дан 28 November 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: