【问题标题】:Convert a string representation of a tuple to a real tuple将元组的字符串表示形式转换为真正的元组
【发布时间】:2015-12-19 22:11:26
【问题描述】:

如何将这个字符串"[{type,a},{to,room01023123},{body,hey what's up mister},{by,someone}]"转换成这样的元组[{"type","a"},{"to","room01023123"},{"body","hey what's up mister"},{"by","someone"}]

【问题讨论】:

  • 这不是一个有效的 Erlang 元组,特别是 {body,hey what's up mister} 部分。这只是虚构的例子吗?
  • 你想用 Erlang 还是 Elixir 做?
  • 如果您修复了字符串中的引号以使其有效,并在字符串末尾添加一个句点,如下所示:"[{\"type\",\"a\"},{\"to\",\"room01023123\"},{\"body\",\"hey what's up mister\"},{\"by\",\"someone\"}]." 那么您可以使用erl_scan:string/1erl_parse:parse_term/1 作为在this question.
  • @PatrickOscity 抱歉,我删除了 elixir 标签,它是用于 erlang 的

标签: parsing erlang erlang-otp erlang-shell


【解决方案1】:

如果您需要从文件中读取,只需使用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_scanerl_parse 部分是this answer 的副本。
  • @SteveVinoski 如果任期无效,第一步当然是使任期有效:)
  • 当然,在这种情况下,此问题与this question 重复。
  • @SteveVinoski,差不多。仍然答案并不完全重复,因为从文件中读取配置是常见任务
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 2016-03-14
  • 1970-01-01
  • 2017-04-30
  • 2011-05-06
  • 2023-03-03
  • 2021-02-20
相关资源
最近更新 更多