Подтвердить что ты не робот

Есть ли прямой эквивалент в Java для Python str.join?

Возможные дубликаты:
Что лучше всего подходит для создания строки разделенных элементов в Java? Java: convert List <String> к строке join() d

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

Дополнительное разъяснение, чтобы избежать его закрытия как дубликата: я бы предпочел не использовать внешние библиотеки, такие как Apache Commons.

Спасибо!

обновить через несколько лет после...

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

4b9b3361

Ответ 1

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

Ответ 2

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

/**
 * 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));
}

Ответ 3

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

Joiner joiner = Joiner.on(";").skipNulls();
. . .
return joiner.join("Harry", null, "Ron", "Hermione");
// returns "Harry; Ron; Hermione"

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

Ответ 4

Компромиссное решение: не писать лишний код "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);

Ответ 5

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