2009年5月18日星期一

字符的替换

查找到的第一个匹配字符进行替换, 使用 String#sub 所用匹配字符进行替换, 使用 String#gsub



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-"



没有评论:

发表评论