Ответ 1
Нет. Такого метода нет. Как и многие другие, я сделал свои версии такого объединения для массива строк и коллекций (итераторы).
Возможные дубликаты:
Что лучше всего подходит для создания строки разделенных элементов в Java? Java: convert List <String> к строке join() d
В Java, учитывая коллекцию, получение итератора и выполнение отдельного случая для первого (или последнего) элемента, а остальное для получения разделенной запятой строки кажется довольно скучным, есть ли что-то вроде str.join
в Python?
Дополнительное разъяснение, чтобы избежать его закрытия как дубликата: я бы предпочел не использовать внешние библиотеки, такие как Apache Commons.
Спасибо!
Нет. Такого метода нет. Как и многие другие, я сделал свои версии такого объединения для массива строк и коллекций (итераторы).
Нет, нет. Вот моя попытка:
/**
* 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));
}
В стандартной библиотеке нет ничего, но Guava, например, имеет Joiner
, который делает это.
Joiner joiner = Joiner.on(";").skipNulls(); . . . return joiner.join("Harry", null, "Ron", "Hermione"); // returns "Harry; Ron; Hermione"
Вы всегда можете написать свой собственный, используя StringBuilder
.
Компромиссное решение: не писать лишний код "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);
Не в стандартной библиотеке. Он находится в StringUtils commons lang.