# ruby的gsub字符串替换功能

1.可以使用hash来替换对应的字符串:

"hello 123 world".gsub(/hello|world/, ‘hello‘=>‘HELLO‘, ‘world‘=>‘WORLD‘)
# => "HELLO 123 WORLD"

虽然支持第二个参数为hash,但不支持 symbol索引,即 hello: ‘HELLO‘, world: ‘WORLD‘ 无效

"hello 123 world".gsub(/hello|world/, hello: ‘HELLO‘, world: ‘WORLD‘)
#  => " 123 "

因为没有找到对应的索引,所以被替换成了空字符。

2.可以使用正则表达式替换字符串:

"hello 123 world".gsub /(\d+)/, ‘number‘
# => "hello number world"

3.可以使用 \1 \2 \n ... 来引用匹配的子串

"hello 123 world".gsub /(\d+)/, "(\\1)"
# => "hello (123) world"

4.可以使用 block来处理匹配内容

"hello 123 world".gsub /(\d+)/ do |m|
    m.to_i + 1
end
# => "hello 124 world"

5.多个匹配在block中的引用,无法通过多个block参数引用到,下面的写法无效:?

"His height is 175.00cm and weight 60.00kg.".gsub /(\d+\.\d+)(\w+)/ do |height, unit|
    "%g%s" % [height, unit]
end

只有第一个参数完整匹配到了 175.00cm,而后面的参数都为nil:height => 175.00cm, unit => nil
正确?写法:
1.

"His height is 175.00cm and weight 60.00kg.".gsub /(\d+\.\d+)(\w+)/ do |matched|
    "%g%s" % [$1, $2]
end
# => "His height is 175cm and weight 60kg."

2.

"His height is 175.00cm and weight 60.00kg.".gsub /(\d+\.\d+)(\w+)/ do |matched|
    "%g%s" % [Regexp.last_match[1], Regexp.last_match[2]]
end
# => "His height is 175cm and weight 60kg."
时间: 2024-10-10 06:55:14

# ruby的gsub字符串替换功能的相关文章

python 字符串替换功能 string.replace()可以用正则表达式,更优雅

说起来不怕人笑话,我今天才发现,python 中的字符串替换操作,也就是 string.replace() 是可以用正则表达式的. 之前,我的代码写法如下,粗笨: 自从发现了正则表达式也生效后,代码变得优雅简洁: 备注:上图中的base_info 是 pandas 里的 dataframe 数据结构,可以用上述方法使用 string 的 replace 方法. 原文地址:https://www.cnblogs.com/jjliu/p/11514226.html

20_Shell语言———VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能

Vim编辑器可以让用户按照需求来定制一些使用属性. 一.窗口属性定义 1)显示行号 行号不是内容,只是用来帮助用户确认文本所在的行.在vim编辑器中,如果要显示行号,可以在末行模式下输入: set number 如果想关闭,则可以在功能名称前面加上no,即: set nonumber 命令可以被简写,如set number 可以简写为 set nu:set nonumber 可以简写为 set nonu. 注意,上述设定仅对当前vim的进程有效,一旦当前进程关闭,这些设定就会失效,如果要使设定永

怎么在notepad里面,将字符串替换成换行

用Notepad++可以,利用查找和替换功能,选择正则表达式,查找目标框里输入你想要替换的字符串,替换为框里输入\r,点击替换即可.这是个 很强大的功能,利用还它可以批量替换任何字符串,比如你链接是<a href="#" >123</a> <a href="#" >123</a> <a href="#" >123</a> <a href="#" &g

Java基础知识强化41:StringBuffer类之StringBuffer的替换功能

1. StringBuffer的替换功能: public  StringBuffer   replace(int  start,  int  end, String  str): 2. 案例演示: 1 package cn.itcast_04; 2 3 /* 4 * StringBuffer的替换功能: 5 * public StringBuffer replace(int start,int end,String str):从start开始到end用str替换 6 */ 7 public cl

【java解惑】java字符串替换方法使用

    如下代码: public class Example020 { public static void main(String[] args) { String separator = File.separator; String clazzName = Example020.class.getName(); String rs1 = clazzName.replace(".", separator); // 方法1 String rs2 = clazzName.replaceA

文件内容替换功能

实现替换功能:分别传入文件名源字符串和要修改后的字符串,实现将文件内容源字符串被替换成修改后的字符串要求不产生新文件: import sys,os with open (sys.argv[1],'r') as fr open('a.txt.bak','w+') as fw: src_res=fr.read() dst_res=src_res.replace(sys.argv[2],sys.argv[3]) fw.write(dst_res) os.remove(sys.argv[1]) os.r

.Net字符串替换

在.Net中,有些地方需要进行字符的替换才能实现一些相关功能,这里是一个简单的字符串替换的方法 //如下,变量strWhere中是通过一些方法获取的sql拼接的条件语句,但在数据库中是多表查询,有同名字段,这样PERSONNAME就会未命名定义,而无法获取数据,在数据库中就会用字段所在的表名'T'标识出来(T.PERSONNAME),而在.Net中strWhere是固定获取的,所以此处就需要字符串替换,Replace()方法 string strWhere=(AND PERSONNAME='zh

C#下利用正则表达式实现字符串搜索功能的方法(转)

关键字:正则表达式.元字符.字符串.匹配: 1.正则表达式简介:正则表达式提供了功能强大.灵活而又高效的方法来处:.NET框架正则表达式并入了其他正则表达式实现的: 2.字符串搜索:正则表达式语言由两种基本字符类型组成:原义(正常:一般表达式语言是一种可以编写搜索表达式的语言: 3..NET框架的正则表达式类:下面通过介绍.NET框架的正则表达式类,熟悉一下: 1.正则表达式简介 正则表达式提供了功能强大.灵活而又高效的方法来处理文本.正则表达式的全面模式匹配表示法可以快速地分析大量的文本以找到

vim实现代码缩进和可视区域的字符串替换

今天2014年9月13号,实现了vim下的代码自动缩进和替换可视区域的字符串,之前一直在用vim这个强大的编辑器,它的强大只有用了的人才知道,现在把这两个很强大的功能展示出来,有个这两个功能,即使你写代码时没有进行缩进,或者是要修改指定区域的字符串时你都会得心应手,闲言少叙,看实现: 1.代码的自动缩进: i:打开vim编辑器,随便打开一个代码,此时代码没缩进,如下图: 现在重点来了,执行命令: 我要实现全部缩进,所以把光标点在代码的开始处,Ctr-v进入可视化区域; G 选中至全部代码的最后一