У меня есть строка str = "[123, 345, 567]". Я хочу преобразовать это в массив arr = [123, 345, 567]. Как это сделать?Как преобразовать строку в массив
ответ
Если вы знаете, что строка содержит массив, вы можете просто использовать eval
;
arr = eval(str)
Если вы не уверены, вы можете пойти на немного сложнее, удаление скобок, расщепление на ,
и собирая номера в массиве;
arr = str[1..-2].split(',').collect! {|n| n.to_i}
Демонстрация обоих here.
Простейшая вещь - это что-то вроде arr = eval(str)
, но это не очень безопасно. Другой вариант - сделать что-то вроде arr = str.gsub(/\[|\]/,'').split(/,/).map(&:to_i)
- удалить круглые скобки из исходной строки, разбить на запятые, а затем преобразовать полученные фрагменты строки в целые числа.
str = "[123, 345, 567]"
1) eval(str)
2) str = "[123, 345, 567]".scan(/\d+/) # Make the array
str.map!{ |s| s.to_i } # convert into integer
Для проектов Rails я обнаружил, что встроенный декодер ActiveSupport JSON является прекрасным решением. Просто оберните строку в формате JSON, декодирует его, а затем возвращает новый массив:
def to_a(str)
wrapped_str = "{ \"wrapper\": #{str} }"
ActiveSupport::JSON.decode(wrapped_str)['wrapper'] rescue str
end
str = '[1, 2, [3, [4, 5, true, "a", {"test": "whee"}]]]'
str_to_a = to_a(str)
Это возвращает массив, пока строка является действительным JSON. Если декодирование завершится неудачно, исходная строка будет возвращена. Обратите внимание, что действительный JSON в этом случае относится только к содержимому массива - если массив строк содержит любые хеши (здесь идет оговорка), все хеш-ключи должны быть заключены в double цитаты. Также обратите внимание, что логические значения будут забрасываться только в booleans, если они не являются, заключенными в кавычки.
Возврат исходной строки при ошибке декодирования позволяет преобразовать строки только там, где это удается (оставив остальные строки без изменений). Кроме того, вы можете заставить все использовать массив (или пустой массив), используя вместо этого rescue []
.
- 1. Как преобразовать строку в массив
- 2. Как преобразовать строку в массив?
- 3. Как преобразовать массив в строку
- 4. Как преобразовать строку в массив?
- 5. Как преобразовать строку в массив?
- 6. Как преобразовать строку в массив?
- 7. Как преобразовать строку в массив?
- 8. Как преобразовать строку в массив?
- 9. Как преобразовать массив в строку
- 10. Как преобразовать строку в массив?
- 11. Как преобразовать массив в строку?
- 12. Как преобразовать строку в массив?
- 13. Как преобразовать строку в массив
- 14. Как преобразовать строку, содержащую массив в массив
- 15. Преобразовать массив взять строку
- 16. PHP, преобразовать строку в массив?
- 17. преобразовать двумерный массив в строку
- 18. JQuery - преобразовать строку в массив
- 19. Невозможно преобразовать массив в строку
- 20. PHP преобразовать строку в массив
- 21. преобразовать строку в многомерный массив
- 22. преобразовать структурированную строку в массив
- 23. javascript преобразовать массив в строку
- 24. Преобразовать массив символов в строку
- 25. Как преобразовать строку в массив в delphi?
- 26. Как преобразовать строку в массив в Scala.html?
- 27. Как преобразовать строку в массив в php
- 28. Как преобразовать строку в массив в php?
- 29. Как преобразовать строку в массив в PHP
- 30. Как преобразовать массив в строку в CakePHP
Стоп, ковбой! Не так быстро. Eval очень опасен. Если бы страница исходила от злых междоузлий, например, как парам, ваше приложение могло бежать НИКОГДА. Представьте себе, что хакер меняет этот параметр str из «[123,456,789]» на «User.destroy_all». Вы более безопасны со вторым вариантом и разбираете идентификаторы. – IAmNaN