如何在Erlang中检查字符串是否含指定字符并替换?
在Erlang中替换字符串里的"*"为"%"的实现方案
嗨,这个需求在Erlang里实现起来很简单,我给你两种实用的方案,适配不同场景:
方案一:使用string:replace/3(Erlang 20+推荐)
从Erlang 20版本开始,string模块提供了直接的替换函数,用法非常直观:
% 定义原字符串 OriginalString = "John*", % 替换所有出现的"*"为"%" ReplacedString = string:replace(OriginalString, "*", "%", all), % 打印结果 io:format("替换后的字符串:~s~n", [ReplacedString]). % 输出:替换后的字符串:John%
这里的all参数是关键,如果省略它,默认只会替换第一个出现的"*"。要是你只需要替换第一个匹配项,直接写成string:replace(OriginalString, "*", "%")就行。
方案二:使用re:replace/4(全版本兼容)
如果你的Erlang版本比较旧,或者需要正则表达式的灵活处理,可以用re模块的替换函数:
OriginalString = "John*", % 注意:正则中"*"是特殊元字符,需要用\\转义 ReplacedString = re:replace(OriginalString, "\\*", "%", [{return, list}]), io:format("替换后的字符串:~s~n", [ReplacedString]). % 输出:替换后的字符串:John%
\\*是转义后的星号,避免被正则引擎当成量词解析{return, list}指定返回值为字符串类型(Erlang里字符串本质是字符列表),如果不加这个参数,默认会返回二进制类型(binary)
如果你只想替换第一个"*",可以把选项改成[{return, list}, {global, false}]。
内容的提问来源于stack exchange,提问作者Rui Motta
相关产品推荐
相关产品推荐

