今天没什么事做,把javascript中replace方法讲解一下,如果讲得不对或不合理是情理之中的事,因为我不是老鸟,也不是菜鸟,我也不知道我当底是什么鸟??呵~~

replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串 (string),replaceText是替代查找到的字符串。。为了帮助大家更好的理解,下面举个简单例子说明一下

var stringObj="终古人民共和国,终古人民";

//替换错别字"终古"为"中国"

//并返回替换后的新字符

//原字符串stringObj的值没有改变

var newstr=stringObj.replace("终古","中国");

alert(newstr);

比我聪明的你,看完上面的例子之后,会发现第二个错别字"终古"并没有被替换成"中国",我们可以执行二次replace方法把第二个错别字"终古"也替换掉,程序经过改进之后如下:

var stringObj="终古人民共和国,终古人民";

//替换错别字"终古"为"中国"

//并返回替换后的新字符

//原字符串stringObj的值没有改变

var newstr=stringObj.replace("终古","中国");

newstr=newstr.replace("终古","中国");

alert(newstr);

我们可以仔细的想一下,如果有N的N次方个错别字,是不是也要执行N的N次方replace方法来替换掉错别字呢??呵,不用怕,有了正则表达式之后不用一个错别字要执行一次replace方法。。程序经过改进之后的代码如下

var reg=new RegExp("终古","g"); //创建正则RegExp对象

var stringObj="终古人民共和国,终古人民";

var newstr=stringObj.replace(reg,"中国");

alert(newstr);

上面讲的是replace方法最简单的应用,不知道大家有没有看懂??下面开始讲稍微复杂一点的应用。。

大家在一些网站上搜索文章的时候,会发现这么一个现象,就是搜索的关键字会高亮改变颜色显示出来??这是怎么实现的呢??其实我们可以用正则表达式来实现,具体怎么样实现呢?简单的原理请看下面的代码

var str="中华人民共和国,中华人民共和国";

var newstr=str.replace(/(人)/g,"$1");

document.write(newstr);

上面的程序缺少互动性,我们再改进一下程序,实现可以自主输入要查找的字符

var s=prompt("请输入在查找的字符","人");

var reg=new RegExp("("+s+")","g");

var str="中华人民共和国,中华人民共和国";

var newstr=str.replace(reg,"$1");

document.write(newstr);

可能大家都会对$1这个特殊字符表示什么意思不是很理解,其实$1表示的就是左边表达式中括号内的字符,即第一个子匹配,同理可得$2表示第二个子匹配。。什么是子匹配呢??通俗点讲,就是左边每一个括号是第一个字匹配,第二个括号是第二个子匹配。。

当我们要把查找到的字符进行运算的时候,怎么样实现呢??在实现之前,我们先讲一下怎么样获取某一个函数的参数。。在函数Function的内部,有一个 arguments集合,这个集合存储了当前函数的所有参数,通过arguments可以获取到函数的所有参数,为了大家理解,请看下面的代码

function test()

{

alert("参数个数:"+arguments.length);

alert("每一个参数的值:"+arguments[0]);

alert("第二个参数的值"+arguments[1]);

//可以用for循环读取所有的参数

}

test("aa","bb","cc");

看懂上面的程序之后,我们再来看下面一个有趣的程序

var reg=new RegExp("\d","g");

var str="abd1afa4sdf";

str.replace(reg,function(){alert(arguments.length);});

我们惊奇的发现,匿名函数竟然被执行了二次,并且在函数里还带有三个参数,为什么会执行二次呢??这个很容易想到,因为我们写的正则表达式是匹配单个数字 的,而被检测的字符串刚好也有二个数字,故匿名函数被执行了二次。。在匿名函数内部的那三个参数到底是什么内容呢??为了弄清这个问题,我们看下面的代 码。

function test()

{

for(var i=0;i

{

alert("第"+(i+1)+"个参数的值:"+arguments[i]);

}

}

var reg=new RegExp("\d","g");

var str="abd1afa4sdf";

str.replace(reg,test);

经过观察我们发现,第一个参数表示匹配到的字符,第二个参数表示匹配时的字符最小索引位置(RegExp.index),第三个参数表示被匹配的字符串 (RegExp.input)。其实这些参数的个数,还会随着子匹配的变多而变多的。弄清这些问题之后,我们可以用另外的一种写法

function test($1)

{

return ""+$1+""

}

var s=prompt("请输入在查找的字符","人");

var reg=new RegExp("("+s+")","g");

var str="中华人民共和国,中华人民共和国";

var newstr=str.replace(reg,test);

document.write(newstr);

看了上面的程序,原来可以对匹配到的字符为所欲为。下面简单举一个应用的例子

var str="他今年22岁,她今年20岁,他的爸爸今年45岁,她的爸爸今年44岁,一共有4人"

function test($1)

{

var gyear=(new Date()).getYear()-parseInt($1)+1;

return $1+"("+gyear+"年出生)";

}

var reg=new RegExp("(\d+)岁","g");

var newstr=str.replace(reg,test);

alert(str);

alert(newstr);

时间: 2016-05-20

java实验报告替换错别字,JavaScript replace new RegExp使用介绍相关推荐

  1. Java实验报告(6)

    Java实验报告(实验6) henu大二Java实验作业 实验目的: 1.掌握容器类的层次结构: 2.掌握Collection接口和List接口的常用方法: 3.掌握Iterator接口的使用方式: ...

  2. java浏览器实验报告_关于java实验报告模板

    关于java实验报告模板 1.掌握Java Applet的程序结构和开发过程. 2.学会编写Applet对应的HTML文件,掌握从HTML文件向Applet传递参数的方法. 3. 掌握文本框对象的使用 ...

  3. java实验报告 05 类与_java程序设计类与方法-java实验报告

    java程序设计类与方法-java实验报告 java程序设计类与方法-java实验报告 1. 实验内容或题目 (1) 编写Java应用程序,实现以下功能:当应用程序运行后,根据屏幕提示进行交互式输入并 ...

  4. java 实验报告模板_Java实验报告模板.doc.doc

    Java实验报告模板.doc 实 验 报 告 课程名称Java面向对象程序设计实验名称检查危险品姓名吴超益学号201424134114专业年级14物联网一.实验目的: 本实验的目的是让学生掌握try- ...

  5. Java实验实现一个circle类,java实验报告-类的定义.doc

    java实验报告-类的定义 南京理工大学泰州科技学院 实验报告书 课程名称: <JAVA面向对象程序设计> 实验题目: 实验三 类的定义 班 级: 09计算机(2) 学 号: 090903 ...

  6. java数组使用实验报告_JAVA数组与类的定义-java实验报告

    JAVA数组与类的定义-java实验报告 JAVA数组与类的定义-java实验报告 .实验目的与要求 1. 熟悉Java类.对象和方法的一般操作练习等. 2. 熟悉数组等的定义和使用. 二.实验内容及 ...

  7. java实验册_Java实验报告册Java实验报告册.doc

    Java实验报告册Java实验报告册 <面向对象程序设计> 实验报告与习题册2013 / 2014 学年 第1学期系 别 计算机科学与技术系专 业 班 级 姓 名 指导教师 目 录 项 目 ...

  8. java泛型实验报告,java实验报告异常集合类和泛型

    java实验报告异常集合类和泛型 成绩: 面向对象原理与 Java 实践课程实验报告实验 3:异常.集合类和泛型姓 名 _ ___ 班 级 _ ___ 学 号 _ ___ 实验地点 _ ___ 实验时 ...

  9. java实验二答案天津商业大学,天津商业大学java实验报告

    天津商业大学java实验报告答案及运行结果 this.start =start; } public Point getEnd(){ return end; } public void setEnd(P ...

最新文章

  1. tomcat源码_从源码角度讲Tomcat在SpringBoot 中是如何启动的?
  2. 在线作图|2分钟绘制三维PCA图
  3. HTML5延迟加载原理
  4. Java类之File记录
  5. 关闭sublime3自动更新(要输入license才会奏效)
  6. 加密算法概念简介--MD5、SHA、DES、3DES、AES、RSA、ECC
  7. docker 容器安装conposer_docker和php:将依赖项(composer)放入容器中
  8. Sharepoint学习笔记—Ribbon系列-- 2. 在Ribbon中添加新Tab
  9. python 北上资金_如何查看北向资金? 什么是北向资金 在股市里面,南代表的是HK,北代表的是大陆。北向 = 从南向北流动,那么北向资金就很好理解了,就是HK的... - 雪球...
  10. [C/C++标准库]_[0基础]_[优先队列priority_queue的使用]
  11. ZYNQ 调试遇到的种种问题汇总[转帖]
  12. Windows窗体和常用控件的事件处理函数
  13. 经典机器学习系列(三)【线性模型与广义线性模型】
  14. QQ连连看 逆向分析外挂制作报告【脱壳ASPPack】【模拟点击】【内联HOOK】
  15. html之css关于引入样式的优先级
  16. 半导体器件物理期末复习
  17. 苹果ipad9和华为matepad11选哪个好
  18. 解压遇到压缩文件已损坏或者不可预料的压缩文件末端
  19. 关于字段超长导致的插入错误的提示信息(value too long for type character varying)
  20. 解决 Vmware 虚拟机安装linux系统无法联网的的问题

热门文章

  1. Xilinx 7series FPGA SelectIO资源--ODDR
  2. xilinx源语 IDDR和ODDR
  3. 文远知行杯广东工业大学第十六届程序设计竞赛 A 区间最大值
  4. debounce实现 js_如何使用 js 实现一个 debounce 函数
  5. 三年级信息技术连接计算机教案,三年级信息技术计算机教案全册.doc
  6. sql语句查oracle版本号
  7. 考研复试 - 机试模板
  8. 最长公共子序列长度的四种解法
  9. iOS开发UI高级—26Quartz2D使用(信纸条纹)
  10. 线程安全第一期○CSA乐观锁