p '字符字符字符'.sub(/字符/, 'zifu') #=> "zifu字符字符" p '字符字符字符'.gsub(/字符/, 'zifu') #=> "zifuzifuzifu" |
sub 和 gsub 自身还代有 block 功能, 所以即使替换字符不是固定的字符,也可以 进行替换
queue = %w(我 爱 你) p '字符字符字符'.sub(/字符/) {queue.shift} #=> "我字符字符" queue = %w(我 爱 你) p '字符字符字符'.gsub(/字符/) {queue.shift} #=> "我爱你" |
在 block 形式中, 当前的匹配作为参数传递给 block ,并且适当地设置 $1, $2 等 变量, 每次调用传入的匹配都将被 block 的返回值所替换
p 'FrontPage'.sub(/(.)([A-Z])/) {$1+' '+$2} #=> "Front Page" p 'MyToDo'.gsub(/(.)([A-Z])/) {$1+' '+$2} #=> "My To Do" |
另一种替换方法是, 使用 String#tr
p 'hello'.tr('aiueo', '#') #=> "h#ll#" p 'hello'.tr('^aiueo', '#') #=> "#e##o" p 'hello'.tr('el', 'ip') #=> "hippo" p 'hello'.tr('a-y', 'b-z') #=> "ifmmp" |
还可以使用指定区域的方法进行替换, String#[]=
# 替换最前端的 1byet 字符 str = 'Numa-' str[0, 1] = 'K' p str #=> "Kuma-" |
没有评论:
发表评论