建议37:推荐使用replace(1)
String对象的replace方法包含两个参数,第一个参数表示执行匹配的正则表达式,也可以传递字符串,第二个参数表示准备代替匹配的子字符串,例如,把字符串html替换为htm。

  1. var b = s.replace("html", "htm" );
    与search和match方法不同,replace方法不会把字符串转换为正则表达式对象,而是以字符串直接量的文本模式进行匹配。第二个参数可以是替换的文本,或者是生成替换文本的函数,把函数返回值作为替换文本来替换匹配文本。

replace方法同时执行查找和替换两个操作。该方法将在字符串中查找与正则表达式相匹配的子字符串,然后调用第二个参数值或替换函数替换这些子字符串。如果正则表达式具有全局性质,那么将替换所有的匹配子字符串,否则,只替换第一个匹配子字符串。
在replace方法中约定了一个特殊的字符“$”,如果这个美元符号附加了一个序号,就表示引用正则表达式中匹配的子表达式存储的字符串。例如:

  1. var s = "javascript";
  2. var b = s.replace( /(java)(script)/, "$2-$1");
  3. alert( b ); //"script-java"
    在上面的代码中,正则表达式/(java)(script)/中包含两对小括号,按顺序排列,其中第一对小括号表示第一个子表达式,第二对小括号表示第二个子表达式,在replace方法的参数中可以分别使用字符串"$1"和"$2"来表示对它们匹配文本的引用,当然它们不是标识符,仅是一个标记,所以不可以作为变量参与计算。除了上面约定之外,美元符号与其他特殊字符组合还可以包含更多的语义,详细说明如下:
  4. $1、$2、…、$99:与正则表达式中的第1~99个子表达式相匹配的文本。
  5. $&(美元符号+连字符):与正则表达式相匹配的子字符串。
  6. $`(美元符号+切换技能键):位于匹配子字符串左侧的文本。
  7. $'(美元符号+单引号):位于匹配子字符串右侧的文本。
  8. $$:表示$符号。
  9. var s = "javascript";
  10. var b = s.replace( /.*/, "$&$&"); //" javascriptjavascript "
    由于字符串“$&”在replace方法中被约定为正则表达式所匹配的文本,因此利用它可以重复引用匹配的文本,从而实现字符串重复显示效果。其中正则表达式“/.*/”表示完全匹配字符串。
  11. var s = "javascript";
  12. var b = s.replace( /script/, "$& != $`"); //"javascript != java"
    其中字符“$&”代表匹配子字符串“script”,字符“$`”代表匹配文本左侧文本“java”。
  13. var s = "javascript";
  14. var b = s.replace( /java/, "$&$' is "); //"javascript is script"
    其中字符“$&”代表匹配子字符串“java”,字符“$'”代表匹配文本右侧文本“script”。然后用“$&$' is”所代表的字符串“javascript is”替换原字符串中的“java”子字符串,即组成一个新的字符串“javascript is script”。

在ECMAScript v3中明确规定,replace方法的第二个参数建议使用函数,而不是字符串(当然不是禁止使用),JavaScript 1.2实现了对这个特性的支持。这样,当replace方法执行匹配时,每次都会调用该函数,函数的返回值将作为替换文本执行匹配操作,同时函数可以接收以$为前缀的特殊字符组合,用来对匹配文本的相关信息进行引用。

  1. var s = 'script language = "javascript" type= " text / javascript"';
  2. var f = function($1){
  3. return $1.substring(0,1).toUpperCase() + $1.substring(1);
  4. }
  5. var a = s.replace( /(bw+b)/g, f );
  6. alert(a); //Script Language = "JavaScript" Type = " Text /JavaScript"

JS编程建议——37:推荐使用replace(1)相关推荐

  1. JS编程建议——8:谨慎使用运算符(3)

    建议8:谨慎使用运算符(3) 要确保变量a的值为连续运算,可以使用小括号逻辑分隔符强迫4个数值先进行连续运算,然后再赋值. a = (1, 2, 3, 4); alert(a); //4 当使用var ...

  2. JS编程建议——7:小心保留字的误用

    建议7:小心保留字的误用 JavaScript语言中定义了很多备用或已经使用的保留字,按首字母顺序列出的保留字. 这些单词中的大多数并没有在语言中使用,但是根据JavaScript语法规则,这些单词是 ...

  3. JS编程建议——42:用好正则表达式静态值

    建议42:用好正则表达式静态值 正则表达式的静态属性比较特殊,有两个名字:长名(全称)和短名(简称,以美元符号开头表示),详细说明见表2.1. 表2.1 RegExp的静态属性 长名 短名 说明 in ...

  4. JS编程建议——2:正确辨析JavaScript句法中的词、句和段

    建议2:正确辨析JavaScript句法中的词.句和段 JavaScript语法包含了合法的JavaScript代码的所有规则和特征,它主要分为词法和句法.词法包括字符编码.名词规则.特殊词规则等.词 ...

  5. JS编程建议——52:建议使用splice删除数组

    建议52:建议使用splice删除数组 删除数组元素的方法有多种,最简单的方法是利用length属性来截断数组,但这种方法比较笨拙,仅能够截断尾部元素.在JavaScript中,由于数组其实就是对象, ...

  6. JS编程建议——32:使用制表

    建议32:使用制表 代码所做的事情越少,它的运行速度就越快,因此,避免重复工作很有意义.多次执行相同的任务也在浪费时间.制表法通过缓存先前计算结果为后续计算所使用,避免了重复工作,这使得制表成为递归算 ...

  7. java字符串元素置于最前_java_java编程常用技术(推荐),一:将String字符串放在最前面 - phpStudy...

    java编程常用技术(推荐) 一:将String字符串放在最前面 防止发生NullPointerException异常,我们通常把String字符串放在equals方法的左边来比较,这样可以有效的避免 ...

  8. python编程有用吗-分享8点超级有用的Python编程建议

    原标题:分享8点超级有用的Python编程建议 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑总结出来的,现在在这里分 ...

  9. PHP 安全编程建议

    PHP 安全编程建议 简介 要提供互联网服务,当你在开发代码的时候必须时刻保持安全意识.可能大部分 PHP 脚本都对安全问题都不在意,这很大程度上是因为有大量的无经验程序员在使用这门语言.但是,没有理 ...

最新文章

  1. SSAN 关系抽取 论文笔记
  2. 终于把时间序列分析的关键点全讲清楚了!
  3. python那么慢为什么还有人用-为什么Python运算慢还拿来搞AI?这三点大多数都不知道?...
  4. 【杂谈】追着光、靠近光、成为光、散发光
  5. 梅赛德斯奔驰即将为Apple Watch推出应用
  6. Windows上使用bat实现备份一个月内的数据库数据到文件
  7. linux 常用命令技巧
  8. python中的列表,添加元素,获取元素,删除元素,列表分片,常用操作符
  9. python变量域名_想尝试使用python进行域名分析,可是没有接触过python,想请教请教。...
  10. Python学习之布尔和数字
  11. 2010.06.04 电影推荐
  12. html5 中的 wbe storage
  13. Oracle 系列 统计信息详解(Statistic)
  14. 记录解决Win10底部任务栏转圈圈问题的过程(Windows假死)
  15. 企业IT机房中使用什么灭火器?
  16. OSChina 周二乱弹 —— 好朋友都脱单了 而我就比较厉害了
  17. 美国东北大学计算机科学,美国东北大学计算机专业排名
  18. 现代化物流对应术语解释
  19. Bayes,HMM,MRF Gibbs Distribution在图像降噪中的应用
  20. QT5.12.0警告 zero as null pointer constant

热门文章

  1. open***无法启动日志报错解决方法
  2. android studio 的自动更新问题
  3. [原] Unity调用android版新浪微博
  4. Mysql5.5配置主从复制
  5. jQuery的ajax使用场景讨论(c#)
  6. 基于Struct的云和租房系统(简单房屋出租)
  7. selenium--字符串/整型问题Can't convert 'int' object to str implicitly提示解决方法
  8. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错
  9. 微软和 SAP 扩展了云环境中的合作关系
  10. 50 种系统免遭黑客侵袭的方法 [2017 年版]