У меня есть строка как: String str = "[aa,bb,cc,dd]"
. Я хочу преобразовать это в список в groovy, как [aa, bb, cc, dd]
. Любой метод groovy, доступный для преобразования этого типа?Преобразование String в массивList в groovy
ответ
Вы должны попробовать, как показано ниже: -
String str = "[aa,bb,cc,dd]"
assert str[1..str.length()-2].tokenize(',') == ['aa', 'bb', 'cc', 'dd']
Надеется, что это помогает .. :)
Возможно, упростить бит: tokenize ('[,]') – railsdog
'str [1..str.lenght() - 2]' можно упростить до 'str [1 ..- 2]' –
Здесь вы идете:
String str= "['aa', 'bb', 'cc', 'dd']"
assert Eval.me(str) == ['aa', 'bb', 'cc', 'dd']
Eval
является то, что вам нужно.
Если эта строка поступает из внешней системы или пользователя, на самом деле небезопасно использовать Eval для этого. Я предпочитаю использовать настоящий парсер/регулярное выражение для этого, чем eval –
@ JérémieB, да, вы правы, в таком сценарии гораздо лучше использовать регулярное выражение. – Opal
Использованию регулярных выражений replaceAll
String str = "[aa,bb,cc,dd]"
def a = str.replaceAll(~/^\[|\]$/, '').split(',')
assert a == ['aa', 'bb', 'cc', 'dd']
EDIT:
Следующая версией является бит более подробный, но обрабатывает дополнительные пробелы
String str = " [ aa , bb , cc , dd ] "
def a = str.trim().replaceAll(~/^\[|\]$/, '').split(',').collect{ it.trim()}
assert a == ['aa', 'bb', 'cc', 'dd']
другой способ без replaceAll & токенизировать:
def s = '[aa,bb,cc,dd]'
def a = []
s.eachMatch(/[\[]?([^\[\],]+)[,\]]?/){ a << it[ 1 ] }
assert '[aa, bb, cc, dd]' == a.toString()
- 1. Преобразование значений SortedMap в массивList
- 2. Преобразование из массива в массивList
- 3. Преобразование переменной String в список [Groovy]
- 4. Преобразование строки в массивList с использованием .add
- 5. Преобразование java в groovy
- 6. Преобразование стека из массива в массивList
- 7. Преобразование Java-кода в Groovy
- 8. Groovy: преобразование AST для делегирования вызова toString в поле String
- 9. загрузить doubles в массивList
- 10. Как добавить пустой массивList в другой массивList, созданный из класса
- 11. Преобразование Iterator [String] в String
- 12. Groovy: Преобразование строки в Multimap
- 13. Добавление int в массивList
- 14. Как преобразовать массивList <String> в объект json
- 15. добавьте больше массивList в меньший массивList в java
- 16. Преобразование XML в Object [] в Java/Groovy
- 17. Добавление объектов в массивList
- 18. Groovy csv to string
- 19. Groovy String оценка runtime
- 20. преобразование String в массив String в Java
- 21. Преобразование String [] в String [] [] в Java
- 22. Groovy String заменяем ссылкой
- 23. Groovy json string empty
- 24. groovy string форматирование
- 25. Поздняя привязка Groovy String?
- 26. Добавление информации в массивList объекта
- 27. Преобразование потока в строку Java/Groovy
- 28. Параметр Groovy «String ...»
- 29. Groovy - String каждый метод
- 30. Преобразование String в ArrayList
В случае, если вы получили эту строку, потому что вы делаете (случайный) 'toString' на«реальный»список, вы лучше предотвращать, что , В противном случае это случайность: '[" 1,2 "]. ToString() => [1,2]' – cfrick
Мне нужно сохранить список в базе данных, также вернуть это как список, можете ли вы дать мне лучшее решение. – Sayem
Используйте формат, который преобразуется в (де) сериализовать данные и выбирает один, который может хранить требуемый тип данных. Например. для списка вы можете использовать JSON. Или, поскольку вы уже на Grails, почему бы не сделать его списком в классе GORM и просто сохранить его как то, что он есть. –
cfrick