У меня есть строка с неизвестной длиной, которая выглядит примерно так
"dog, cat, bear, elephant, ..., giraffe"
Каков оптимальный способ разделить эту строку запятыми, чтобы каждое слово могло стать элементом ArrayList?
Например
List<String> strings = new ArrayList<Strings>();
// Add the data here so strings.get(0) would be equal to "dog",
// strings.get(1) would be equal to "cat" and so forth.
Ответы:
Вы могли бы сделать это:
В основном
.split()
метод разбивает строку в соответствии с (в данном случае) разделителем, который вы передаете, и возвращает массив строк.Тем не менее, вы, кажется, следите за списком строк, а не за массивом, поэтому массив должен быть превращен в список с помощью
Arrays.asList()
утилиты. Так же, как к вашему сведению, вы можете сделать что-то вроде этого:Но обычно лучше программировать на интерфейс, а не на конкретную реализацию, поэтому я бы порекомендовал первый вариант.
источник
str.split
принимает регулярные выражения, так что вы можете использовать,str.split(",[ ]*");
чтобы убрать запятые и пробелы после запятых.ArrayList<String>
.Ну, вы хотите разделить , верно?
Если вы хотите дополнительно избавиться от пробелов вокруг предметов:
источник
Arrays.asList()
идиому.Вы можете разделить его и сделать массив, а затем получить доступ как массив
вы можете получить доступ как
или с помощью цикла
надеюсь, это поможет вам.
источник
Небольшое улучшение: вышеприведенные решения не будут удалять начальные или конечные пробелы в фактической строке. Лучше вызвать трим, прежде чем вызывать сплит. Вместо этого,
использование
источник
("\\s*,\\s*")
только использование(",");
этого приведет к тому же результату.trim(" string, with , space ")
будет"string, with , space"
."dog, cat, bear, elephant, giraffe"
то в этом нет необходимости,trim()
а в случае, если ее использовать,trim()
то выход будет"string,with,space"
не таким"string, with , space"
trim()
удалит все пробелы, а не только левый и правый пробел строки" string, with , space ".trim()
возврата"string, with , space"
. Как говорит javadoc: возвращает копию строки, пропуская начальные и конечные пробелы. Вы не правы, а @ user872858 прав.Сначала вы можете разделить имена, как это
Доступ к вашим животным
А также вы хотите удалить пробелы и запятую вокруг имен животных
источник
Для полноты, используя библиотеку Guava , вы должны сделать:
Splitter.on(",").split(“dog,cat,fox”)
Другой пример:
Splitter.split()
возвращает Iterable, поэтому, если вам нужен List, оберните его,Lists.newArrayList()
как указано выше. В противном случае просто используйте Iterable, например:Обратите внимание, как
trimResults()
обрабатывает все ваши потребности обрезки без необходимости настраивать регулярные выражения для угловых случаев , как сString.split()
.Если ваш проект уже использует Guava, это должно быть вашим предпочтительным решением. Посмотрите документацию Splitter в Руководстве пользователя Guava или javadocs для большего количества опций конфигурации.
источник
Может попробовать с этим сработало у меня
или еще
источник
в build.gradle добавить гуаву
а потом
наслаждаться :)
источник
Удалите все пробелы и создайте фиксированный или неизменный список (см.
asList
API документы )Можно также использовать,
replaceAll(\\s+", "")
но максимальная эффективность зависит от варианта использования. (см. @GurselKoca ответ на Удаление пробелов из строк в Java )источник
Вы можете использовать что-то вроде этого:
Кроме того, вы бы включили библиотеки:
источник
Использовать это :
источник
В Котлине
где
stringArray
этоList<String>
иcommasString
естьString
запятые и пробелыисточник
Это простой способ разбить строку через запятую,
источник
Существует функция,
replaceAll()
которая может удалить все пробелы, заменив их тем, что вы хотите. Напримердам тебе:
источник