javascript学习指南_javascript的replace方法的用法

更新时间:2018-02-19    来源:其他相关    手机版     字体:

【www.bbyears.com--其他相关】

replace是String对象上的一个方法,可以实现把字符串中某些指定的子字符串替换成其他字符串。用法为 “字符串.replace(parm1,parm2)”。其中parm1的老字符串,可以使普通字符串,也可以是一个正则表达式;parm2退换的结果,可以是一个字符串,更重要的是也可以是一个javascript的方法,作为回调函数。下面用几个小例子来分别说明一下。

 代码如下

alert("abcabd".replace("ab","12"));

这里alert的结果就是12cabd,注意到它只替换到第一次出现的,后面不做替换。如果把子串全部替换,只能用正则表达式的方法来操作。

 代码如下

alert("abcabdAbe".replace(/ab/g,"12"));

这样得到的结果为12c12dAbe,g 表示进行全局替换,同时也可以用 i 来忽略大小写,注意正则表达式不能用引号引起来。

 代码如下

var i = 0;
alert("abAabBabC".replace(/ab/g, function(m) {
i++;
return m + "-" + i + "-";
}));

这里的结果是ab-1-Aab-2-Bab-3-C,当匹配到子字符串时,调用回调方法,并把匹配到的值作为参数传入。另外一个例子,把字符串中小于30的数替换成星号

 代码如下

alert("10 33 21 18 52".replace(/d+/g, function(match) {
return parseInt(match) < 30 ? "*" : match;
}));


下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。

 代码如下

//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url
var reg=new RegExp("()(\d+),(\d+).aspx","gmi");
var url="1017141,20361055.aspx";

//方式一,最简单常用的方式
var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
alert(rep);

//方式二 ,采用固定参数的回调函数
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);


//方法四
//方式四和方法三很类似, 除了返回替换后的字符串外,还可以单独获取参数
var bookId;
var chapterId;
function capText()
{
    var args=arguments;
    bookId=args[2];
    chapterId=args[3];
    return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];
}

var rep4=url.replace(reg,capText);
alert(rep4);
alert(bookId);
alert(chapterId);


//除了使用replace方法获取正则表示式的分组外,还可以使用test ,exec方法获取分组,只是手法有所不同而已
var reg2=new RegExp("()(\d+),(\d+).aspx","gmi");
var m=reg2.exec("1017141,20361055.aspx");
var s="";
//获取所有的分组
for (i = 0; i < m.length; i++) {
      s = s + m[i] + "n";     
      }
alert(s);

bookId=m[2];
chapterId=m[3];
alert(bookId);
alert(chapterId);


//使用test方法获取分组
var reg3=new RegExp("()(\d+),(\d+).aspx","gmi");
reg3.test("1017141,20361055.aspx");
//获取三个分组
alert(RegExp.$1);
alert(RegExp.$2);
alert(RegExp.$3);

本文来源:http://www.bbyears.com/asp/39380.html

热门标签

更多>>

本类排行