网站地图    收藏   

主页 > 前端 > javascript >

js 字符替换replace()函数用法详解

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] replace()函数在js中使用是string.replace(参数1,参数2)这种形式,它还可以使用正则模式进行字符匹配替换哦,下面我来介绍replace()函数用法,有需要的朋友可参考。...

replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身

方式一,最简单常用的方式

 代码如下 复制代码

<script language="javascript">  
var stringObj="终古人民共和国,终古人民";  
 
//替换错别字“终古”为“中国”  
//并返回替换后的新字符  
//原字符串stringObj的值没有改变  
var newstr=stringObj.replace("终古","中国");  
alert(newstr);  
</script> 

方式二 ,采用固定参数的回调函数

 代码如下 复制代码

var rep2=url.replace(reg,function(m,p1,p2,p3){return p1+"ShowBook.aspx?bookId="+p3+"&chapterId="+p3});
alert(rep2);

方式三,采用非固定参数的回调函数

 代码如下 复制代码

var rep3=url.replace(reg,function(){var args=arguments; return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];});
alert(rep3);

方法四,正则模式替换

 代码如下 复制代码


//把word-word转化为wordWord
function camelize(s){
return s.replace(/-(w)/g, function(strMatch, p1){
return p1.toUpperCas();
});
}

如果

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

Js代码

 代码如下 复制代码
<script language="javascript">  
var reg=new RegExp("终古","g"); //创建正则RegExp对象  
var stringObj="终古人民共和国,终古人民";  
var newstr=stringObj.replace(reg,"中国");  
alert(newstr);  
</script> 

在使用过程中自己碰的问题解析

 代码如下 复制代码
str=str.replace("hand","hand.gif");

输出:hand.gif hand hand

只替换了一次。。。:(

于是写

 代码如下 复制代码
str = str.replace(/hand/,"hand.gif")

无效。。。
全部替换要加g,

 代码如下 复制代码
str = str.replace(/hand/g,"hand.gif")

还是不行:(

后来百度,google都找到了得到了结果是原来要用()括起来,才会替换()里的东东。正确的写法如下:

 代码如下 复制代码

str = "hand hand hand";
str=str.replace(/(hand)/g,"hand.gif");  
document.write(str); 
正确输出:hand.gif hand.gif hand.gif。

JS的正则另一种写法是使用RegExp:

 代码如下 复制代码
如str=str.replace(/(hand)/g,"hand.gif");
等同于:
reg = new RegExp("(hand)","g");
   str = str.replace(reg,'hand.gif');

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论