A-A+

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

2016年10月15日 前端设计 暂无评论 阅读 5 views 次

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

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

方式一,最简单常用的方式,代码如下:

  1. <script language="javascript">     
  2. var stringObj="终古人民共和国,终古人民";     
  3.     
  4. //替换错别字“终古”为“中国”     
  5. //并返回替换后的新字符     
  6. //原字符串stringObj的值没有改变     
  7. var newstr=stringObj.replace("终古","中国");     
  8. alert(newstr);     
  9. </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);

方法四,正则模式替换,代码如下:

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

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

  1. <script language="javascript">     
  2. var reg=new RegExp("终古","g"); //创建正则RegExp对象     
  3. var stringObj="终古人民共和国,终古人民";     
  4. var newstr=stringObj.replace(reg,"中国");     
  5. alert(newstr); //xiariboke.net  
  6. </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');

标签:

给我留言