Как преобразовать эту строку "[{type,a},{to,room01023123},{body,hey what's up mister},{by,someone}]"
в кортеж, как этот [{"type","a"},{"to","room01023123"},{"body","hey what's up mister"},{"by","someone"}]
Преобразовать строковое представление кортежа реального кортежа
ответ
Если вам нужно прочитать из файла, просто используйте file:consult
-spec consult(Filename) -> {ok, Terms} | {error, Reason}
В противном случае вам может использовать модуль erl_parse
в сочетании с erl_scan
. В простейшем случае, как этот
{ok, Tokens, _Line} = erl_scan:string("{hello, world}."),
erl_parse:parse_term(Tokens).
И не забывайте, что условия должны заканчиваться полной остановки.
'file: consult/1' не будет работать в этом случае, потому что этот термин недействителен. И часть ответа «erl_scan» и «erl_parse» - это дубликат [этого ответа] (http://stackoverflow.com/a/28579217/409228). –
@SteveVinoski, если термин недействителен, первым шагом является, чтобы, конечно, сделать срок действительным :) – Lol4t0
Конечно, в этом случае этот вопрос является дубликатом [этого вопроса] (http://stackoverflow.com/q/28578482/409228). –
Решение по лбу:
Str = "[{type,a},{to,room01023123},{body,hey what's up mister},{by,someone}]".
Need = [{"type","a"},{"to","room01023123"},{"body","hey what's up mister"},{"by","someone"}].
L1 = string:tokens(tl(Str),",").
R=[fun(El)->Add= case El==length(L1)-1 of true->2;false->1 end,
Temp = lists:nth(X+1,L1),
{tl(lists:nth(X,L1)),lists:sublist(Temp,1,length(Temp)-Add)} end(X)
||X<-lists:seq(1,length(L1),2)].
прокомментируйте причину downvote. –
Это решение! спасибо – user1000622
Даунвит не мой, но это значительно хуже, чем другой ответ в большинстве случаев: читаемость, производительность, обработка ошибок и т. д. –
- 1. Преобразовать элементы свинки кортежа строк
- 2. Создание именованного кортежа из кортежа?
- 3. Дифференцирование кортежа из кортежа кортежей
- 4. Преобразование целого числа кортежа в строку кортежа
- 5. печать элементов в списке кортежа кортежа
- 6. Заказ кортежа, чтобы получить максимальный размер кортежа
- 7. преобразовать выражение в строковое представление?
- 8. Печать кортежа
- 9. XCTest'ing кортежа
- 10. Продукт кортежа
- 11. Поднаборов кортежа
- 12. Subtuples кортежа
- 13. Python - Как преобразовать список кортежа к кортежу
- 14. Преобразовать один элемент кортежа в список кортежей
- 15. Как преобразовать кортеж в строку для кортежа?
- 16. преобразовать второй элемент RDD кортежа массива
- 17. Преобразование кортежа в строку
- 18. Разбор кортежа из строки?
- 19. Выведите класс из кортежа
- 20. Преобразование строки-кортеж кортежа
- 21. Преобразование кортежа в строку
- 22. Как преобразовать вектор в форме строки в форму кортежа с каждым векторным компонентом, являющимся элементом кортежа?
- 23. Преобразование строки кортежа в кортеж
- 24. Извлечение элемента из кортежа внутри кортежа на основе некоторого условия
- 25. Извлечение кортежа value_type из кортежа контейнеров в C++ 11
- 26. Умножить элементы кортежа, если первый элемент кортежа соответствует еще игнорировать
- 27. Каков предел (если он есть) для кортежа кортежа в Swift?
- 28. Применение частичной функции на поле кортежа, сохранение структуры кортежа
- 29. Преобразование кортежа dict в кортеж кортежа dict в python
- 30. недопустимый размер кортежа в создании Decimal из списка или кортежа
Это не является допустимым Erlang кортеж, в частности, '{тело, эй, что случилось сеньор}' часть. Это только пример? –
И вы хотите сделать это в Эрланге или в Эликсире? –
Если вы исправите цитату в строке, чтобы сделать ее действительной, и добавьте период в конец строки, например: '" [{\ "type \", \ "a \"}, {\ "to \ ", \" room01023123 \ "}, {\" body \ ", \" hey what is up mister \ "}, {\" by \ ", \" someone \ "}].", тогда вы можете использовать 'erl_scan: string/1' и 'erl_parse: parse_term/1', как в [этот вопрос] (http://stackoverflow.com/q/28578482/409228). –