我想编写一个函数来转换可见字符串中的“无可见ASCII代码”
示例:
abc \ r \ n将变为abc< 0d>< 0a>
最好的方法是什么?这项功能是否已经存在?
答案 0 :(得分:1)
pp(C) when C <32 ; C>126 ->
io_lib:format("<~2.16.0B>",[C]);
pp(C) ->
C.
1>lists:flatten(lists:map(fun pp/1,"abc\r\n")).
"abc<0D><0A>"
答案 1 :(得分:0)
我猜你可以使用io:format
1>io:format("~w~n",["abc\r\n"]).
[97,98,99,13,10]
ok
2>
答案 2 :(得分:0)
只需重写@Nibon给出的解决方案
pp(Str) -> pp(Str, []).
pp([],Acc) -> lists:flatten(lists:reverse(Acc));
pp([C|S], Acc) when C < 32; C>126 -> pp(S,[io_lib:format("<~2.16.0B>",[C]) | Acc]);
pp([C|S], Acc) -> pp(S,[C | Acc]).
1> pp:pp("abc\r\n").
"abc<0D><0A>"