js 字符替换replace()函数用法详解
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方法,程序经过改进之后的代码如下:
- <script language="javascript">
- var reg=new RegExp("终古","g"); //创建正则RegExp对象
- var stringObj="终古人民共和国,终古人民";
- var newstr=stringObj.replace(reg,"中国");
- alert(newstr); //xiariboke.net
- </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');