[英]How to replace characters in string Erlang?
我有这段获取 sessionid 的代码,将其设为字符串,然后在 redis 中创建一个密钥集,例如{{1401,873063,143916},<0.16443.0>}
。 我正在尝试用字母“a”替换此 session 中的{
字符。
OldSessionID= io_lib:format("~p",[OldSession#session.sid]),
StringForOldSessionID = lists:flatten(OldSessionID),
ejabberd_redis:cmd([["SADD", StringForSessionID, StringForUserInfo]]);
我试过这个:
re:replace(N,"{","a",[global,{return,list}]).
这是这样做的好方法吗? 我读到 Erlang 中的正则表达式不是建议的做事方式。
您的解决方案有效,如果您对此感到满意,则应保留该解决方案。
在我这边,我更喜欢列表理解: [case X of ${ -> $a; _ -> X end || X <- StringForOldSessionID ]
[case X of ${ -> $a; _ -> X end || X <- StringForOldSessionID ]
[case X of ${ -> $a; _ -> X end || X <- StringForOldSessionID ]
。 (只是因为我不必检查功能文档:o)
re:replace(N,"{","a",[global,{return,list}]).
这是这样做的好方法吗? 我读到Erlang中的regexp不是建议的做事方式。
根据官方文件 :
2.5误区:弦乐很慢
实际上,如果处理不当,字符串处理可能会很慢。 在Erlang中,您将需要更多地考虑如何使用字符串,并选择适当的表示形式,如果要使用正则表达式,请使用re模块而不是过时的regexp模块 。
因此,您可以对字符串使用re,或者:
如果N是{{1401,873063,143916},<0.16443.0>},则将{留在后面(使用模式匹配)
{{A,B,C},Pid} = N
然后将A,B,C,Pid格式化为字符串。
由于 Erlang OTP 20.0,您可以使用 string 模块中的string:replace/3 function。
string:replace/3 - 用 Replacement 替换 String 中的 SearchPattern。 第 3 个 function 参数表示是否替换 SearchPattern 的前导、尾随或所有遭遇。
string:replace(Input, "{", "a", all).
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.