显示标签为“tr”的博文。显示所有博文
显示标签为“tr”的博文。显示所有博文

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



2009年5月16日星期六

字母大小写的转换

将字符串中的所有大写字母转换成小写 String#upcase, 将字符串中的所有小写字母转换成大写 String#downcase



p 'aBcDeFg-->'.upcase    #=> "ABCDEFG-->"
p 'aBcDeFg-->'.downcase    #=> "abcdefg-->"



upcase 和 downcase 方法只对字母有效, 其它的字符会原样输出。 如果想将字符串中某一指定字母进行大小写转换时, 使用的方法是String#tr



p 'abcdefghijklmn'.tr('acegikm', 'ACEGIKM')
    #=> "AbCdEfGhIjKlMn"


将字符串的首字符转换成大写字母, 使用的方法是String#capitalize



p 'this is a pen'.capitalize    #-> "This is a pen"



大小写字母的相互转换, 使用的方法是String#swapcase



p 'aBcDeFg-->'.swapcase    #-> "AbCdEfG-->"