2013-05-22 3 views
-2

мне нужна моя string: "---\n- aaaadddhh ddddggg\n- bbbdddddf ff ddd\n- cccf\n" преобразовать в array в РубинеСтрока массива в Ruby,

Это то, что я хочу, чтобы это было:

["aaaadddhh ddddggg", "bbbdddddf ff ddd", "cccf"] 

ответ

8

Это YAML. Используйте YAML.load(str), чтобы отменить его из строки в объект.

> require 'yaml' 
=> true 
> YAML.load "---\n- aaaadddhh ddddggg\n- bbbdddddf ff ddd\n- cccf\n" 
=> ["aaaadddhh ddddggg", "bbbdddddf ff ddd", "cccf"] 

Имейте в виду, что есть риски безопасности в демаршаллизации произвольный YAML, поэтому убедитесь, что источник вы передаете в него доверяют.

+0

УДИВИТЕЛЬНЫЙ! большое спасибо! –

+0

так, как это сделать? –

+1

Убедитесь, что люди не могут передать произвольные вещи в ваш вызов 'YAML.load'. Если вам нужно принять произвольные сериализованные строки для загрузки, я рекомендую использовать JSON вместо этого. Вы можете попробовать использовать драгоценный камень [safe_yaml] (https://github.com/dtao/safe_yaml), но я его не тестировал и не могу лично говорить о том, насколько он надежный. –

Смежные вопросы