`
jsntghf
  • 浏览: 2526274 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

在一个字符串上同时执行多次搜索替代操作

 
阅读更多
"Here is number #123".gsub(/[a-z]/i, '#').gsub(/#/, 'P')

 

这段代码将会输出:PPPP PP PPPPPP P123,我现在想把所有的字母替换成#,同时将#替换成P,那该怎么办呢?

 

现在提供一个方法,可以在一个字符串上同时执行多次搜索替代操作。

 

class String
  def mgsub(key_value_pairs = [].freeze)
    regexp_fragments = key_value_pairs.collect{|k, v| k}
    gsub(Regexp.union(*regexp_fragments)) do |match|
      key_value_pairs.detect{|k, v| k =~ match}[1]
    end
  end
end

 

再看一下调用

"Here is number #123".mgsub([[/[a-z]/i, '#'], [/#/, 'P']])

 

后的输出结果:#### ## ###### P123

分享到:
评论

相关推荐

    统计字符串LE出现的次数

    在这个问题中,我们被要求编写一个算法来统计给定字符串中特定子串"LE"出现的次数。这是一个基础的文本处理任务,通常可以使用各种编程语言来解决,比如C、C++、Python、Java等。然而,由于标签中提到了"汇编语言",...

    Java 字符串连接的性能问题分析

    Java 中使用 + 作为字符串连接符是把多个字符串合并成一个字符串的方便途径,但是在大规模的场景中,这种方式变得不合时宜。下面我们来详细分析 Java 字符串连接的性能问题。 Java 字符串连接的性能问题 在 Java ...

    C语言程序设计标准教程

     本程序中用赋值语句给num和name两个成员赋值,name是一个字符串指针变量。用scanf函数动态地输入sex和score成员值,然后把boy1的所有成员的值整体赋予boy2。最后分别输出boy2 的各个成员值。本例表示了结构变量的...

    Java 替换字符串中的回车换行符的方法

    `Matcher.group()` 返回最近一次匹配的子串,`group(0)`返回整个匹配的字符串,而`group(1)`等返回正则表达式中用括号定义的捕获组。如果正则表达式中有多个捕获组,`group(int)`方法的参数就是对应组的索引。 总的...

    mem:廉价的Go类型,可以在只读[] byte或字符串上进行操作

    `go4.org/mem`库提供了一种高效且廉价的方式来在只读的`[]byte`或字符串上执行常见操作,无需额外分配内存。这个库特别适用于需要频繁处理字节序列而不想增加内存开销的场景,例如解析协议、处理二进制数据或分析...

    JavaScript执行效率优化与内存管理优化.pdf

    这种方式避免了多次创建和销毁字符串对象,尤其是在字符串数量较大时,性能优势明显。 **1.3 内存管理优化** 1.3.1 及时解除引用 确保不再使用的变量、对象或DOM元素引用设为`null`,这有助于垃圾回收机制识别并...

    JavaScript笔记

    |--x.toString():用于把一个 Number 对象转换为一个字符串,并返回结果 19.正则表达式对象:(专门用于查找和验证) reg.test(‘要验证的完整字符串’)匹配返回true,否则返回false 强调:如果正则表达式使用了^和$...

    高效字符替换器,可以替换如网页等文件里不理想的字符

    这个工具允许用户指定一个或多个源文件,然后在这些文件中查找并替换特定的字符或字符串。例如,如果你发现你的网页中有一些不理想的字符,如特殊符号、非ASCII字符或者是被黑客插入的恶意代码,你可以使用字符替换...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    [Csharp高级编程(第6版)]7章8章9章

    - **概念**:一个委托可以绑定多个方法,当调用委托时,所有绑定的方法都会被执行。 - **实现方式**:使用+=操作符添加方法到委托,使用-=操作符移除方法。 **4. Lambda 表达式与匿名方法** - **Lambda 表达式**:...

    搜索和替换

    用户可以输入一个或者多个字符序列作为搜索条件,程序会遍历整个文本,找出所有与之匹配的字符串。关键词可以是精确匹配,也可以包含通配符,如星号(*)代表任意数量的字符,问号(?)代表单个字符。此外,高级搜索通常...

    嵌入式+芯片手册相关单词表

    - **strcat (字符串连接函数)**:将一个字符串添加到另一个字符串的末尾。 - **strcpy (字符串拷贝函数)**:将一个字符串复制到另一个字符串。 - **strcmp (字符串比较)**:比较两个字符串。 - **strlen (字符长度)*...

    大一c语言概念整理

    21. 字符串函数的替代实现:C语言中,我们可以不用字符串函数编写程序,可以自己实现字符串的连接、拷贝和比较等操作。 22. 主函数:C语言中的每个程序都是由若干个函数组成的,其中必有,并且只有一个主函数main...

    提高sql执行效率的几点建议

    1. **LIKE语句的优化**:LIKE操作符通常用于模糊搜索,但其效率较低,尤其是在搜索模式以通配符开头的情况下。例如,`like '4ye'`比`like 'ye%'`的效率更高,因为后者需要对每一行数据进行完整的字符串匹配。如果...

    python cookbook 英文版

    - 结合正则表达式和`re.sub()`函数,可以高效地在一个字符串中替换多个不同的模式。 - **在不同命名约定之间转换** - 使用字符串操作和正则表达式,可以实现如驼峰命名法、下划线命名法等命名风格之间的转换。 -...

    提高PHP编程效率的53个要点(经验小结)

    此外,在使用echo函数时,推荐使用单引号而非双引号,因为echo能够接受多个字符串参数进行输出,这样可以避免字符串连接的开销。 在面向对象编程中,如果一个类方法不会被子类覆盖,推荐使用static定义,这样做能够...

    SQL执行提高效率的多种方法

    在FROM子句中使用子查询会显著降低查询性能,因为这通常会导致多次执行子查询或创建临时表。相反,应该将子查询的结果作为视图或物化视图预先计算并存储,或者使用JOIN语句来连接多个表,以减少查询的复杂度和执行...

    效率高的Javscript字符串替换函数的benchmark

    作者进行了10次测试,每次对一个2048字节的字符串执行100次替换操作,记录了`toTXT_1`(传统方法)和`toTXT_2`(`Clear`方法)的平均执行时间。结果显示,`Clear`方法的执行时间始终低于传统方法,证明了其在性能上...

Global site tag (gtag.js) - Google Analytics