在Erlang中删除字符串的子字符串/字符串模式

时间:2014-09-06 18:54:18

标签: functional-programming erlang elixir erlang-shell

我有一个像

这样的xml字符串
 S = "<B xmns=\"som2\"> <a other='v1' more='v2'/><b some=\"v3/></B>".

我想删除结束标记</B>

 S2 = "<B xmns=\"som2\"> <a other='v1' more='v2'/><b some=\"v3/>"

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

如果您只想删除特定字符串文字</B>,那么获取子列表就可以解决问题:

S = "<B xmns=\"som2\"> <a other='v1' more='v2'/><b some=\"v3\"/></B>",
lists:sublist(S, 1, length(S) - 4).
%%= "<B xmns=\"som2\"> <a other='v1' more='v2'/><b some=\"v3\"/>"

如果您需要更通用的方法,可以使用re:replace/3函数:

S1 = re:replace(S, "</B>", ""),
S2 = iolist_to_binary(S1),
binary_to_list(S2).
%%= "<B xmns=\"som2\"> <a other='v1' more='v2'/><b some=\"v3\"/>"

更新

正如评论中所提到的,提供选项{return, list}更加清晰:

re:replace(S, "</B>", "", [{return,list}]).
%%= "<B xmns=\"som2\"> <a other='v1' more='v2'/><b some=\"v3\"/>"