ruby gsub和sub 的特殊使用_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > ruby gsub和sub 的特殊使用

ruby gsub和sub 的特殊使用

 2019/4/4 22:45:15  zhangcaiyanbeyond  程序员俱乐部  我要评论(0)
  • 摘要:gsub和sub使用常用的使用方式省略,不再描述如果第二个参数是hash,那么匹配到的串被替换的时候,将从hash里找对应的键,如果有,则替换为键对应的值,如果没有则替换为空字符串"fofaisbest".gsub(/best/,'a'=>'1')返回fofais"fofaisbest".gsub(/best/,'best'=>'good')返回fofaisgood以上两种使用方式没有意义,因为完全可以把第二个参数用字符串替换,更方便,如下更有意义"fofaisbest".gsub
  • 标签:使用 Ruby
gsub和sub使用

常用的使用方式省略,不再描述

如果第二个参数是hash,那么匹配到的串被替换的时候,将从hash里找对应的键,如果有,则替换为键对应的值,如果没有则替换为空字符串

"fofa is best".gsub(/best/, 'a' => '1')  返回 fofa is
"fofa is best".gsub(/best/, 'best' => 'good') 返回 fofa is good

以上两种使用方式没有意义,因为完全可以把第二个参数用字符串替换,更方便,如下更有意义
"fofa is best".gsub(/[best]/, 'b' => '1', "e" => '2', "s" => 3, "t" => "4") 返回 "fofa i3 1234"

块: 匹配的内容,将被传入块中作为参数,经过运算,返回被替换的内容
"fofa is best".sub("best"){|str| str+" and good"}  返回  fofa is best and good,这个等同于如下

使用\1和\2表示匹配正则里的子串,\1表示第一个子串,\2表示第二个子串,这里需要注意的是使用\1和\2这种需要用单引号,别用双引号,双引号会转为字符,如"\101"就是8进制的65,就是A字符,  如果非要使用双引号,由于转义的原因,可以这样使用"\\1"等同于'\1'
上面的示例可以用另一种方式实现,如下
"fofa is best".sub(/(best)/, '\1 and good') 返回  fofa is best and good

基于以上内容,那么"fofa is best".sub(/best/, '\1 and good')会返回  fofa is  and good,因为\1没有匹配的子串,所以这里会是空

接下来是最重要的\+,经过测试这个代表最后一个匹配的子串,如下
"fofa is best".gsub(/(fofa) is (best)/, '*\+*')  返回 *best*
"fofa is best".sub(/best/, '\+') 返回 fofa is ,\+没有对应的匹配的子串,所以是空

问题:"a + b".gsub('+', "\\" + '+') 返回什么?
上面的表达式等于"a + b".gsub('+', "\\+") 等于 "a + b".gsub('+', '\+'),此时匹配的串里没有子串,\+就是空字符串,所以加号会被替换为空字符串,结果是a  b
上一篇: C# 批量删除Excel公式并保留文本值 下一篇: 没有下一篇了!
发表评论
用户名: 匿名