JavaScript 字符串替换
■知识点
使用字符串的replaceO方法可以替换指定的子字符串。该方法包含2个参数,第1个参数表示执行匹配的正则表达式,第2个参数表示准备替换匹配的子字符串。
■实例设计
【示例1】下面的代码使用replaceO方法替换字符串中“html”为“htm”。
var s = "http://www.mysite.cn/index.html";
var b = s.replace( /html/, "htm" ) ; //把字符串 html 替换为 htm
console.log ( b ); //返回字符串"http://www.mysite .cn/index.htm"
该方法第1个参数是一个正则表达式对象,也可以传递字符串。
【示例2】下面的代码在使用replaceO方法时,灵活使用替换函数修改匹配字符串。
var s = "http://www.mysite.cn/index.html";
function f ( x ) { //替换文本函数
return x. substring ( x. lastlndexOf (".") +1, x. length - 1 ) //获取扩展名部分字符串
}
var b = s.replace ( / (html) /, f (s) ) ; //调用函数指定替换文本操作
console, log ( b ); //返回字符串"http://www.mysite.cn/index.htm"
replace方法实际上执行的是同时查找和替换两个操作。它将在字符串中查找与正则表达式相匹配的子字符串,然后调用第2个参数值或替换函数替换这些子字符串。如果正则表达式具有全局性质g,那么将替换所有的匹配子字符串;否则,它只替换第一个匹配子字符串。
【示例3】在replaceO方法中约定了一个特殊的字符($),这个美元符号如果附加一个序号就表示对正则表达式中匹配的子表达式存储的字符串引用。
var s = "JavaScript";
var b = s . replace ( / (Java) (Script) /, "$2-$1"), //交换位置
console, log ( b ); //返回字符串"Script-Java"
在上面的示例中,正则表达式/Gava)(script)/中包含两对小括号,按顺序排列,其中第1对小括号表示第1个子表达式,第2对小括号表示第2个子表达式,在replaceO方法的参数中可以分别使用字符串"$1"和"$2"来表示对它们匹配文本的引用。另外,美元符号与其他特殊字符组合还可以包含更多的语义,详细说明可以参考下一章正则表达式的讲解。
【示例4】下面的代码把字符串中每个单词转换为首字母大写形式显示。
var s = ' javascript is script , is not java.’; //定义字符串
//定义替换文本函数,参数为第1个子表达式匹配文本
var f = function($1){
//把匹配文本的首字母转换为大写
return $1.substring( 0, 1 ) .toUpperCase () + $1.substring( 1 ) .toLowerCase();}
var a = s . replace ( / (\b\w+\b) /g, f ) ; //匹配文本并进行替换
console. log ( a ); //返回字符串"Javascript Is Script, Is Not Java."
在上面的示例中,替换函数的参数为特殊字符“sr,它表示正则表达式/(\b\w+\b)/中小括号匹配的文本,在函数结构内对这个匹配文本进行处理,截取其首字母并转换为大写形式,余下字符全部小写,然后返回新处理的字符串。replace方法在原文本中使用这个返回的新字符串替换掉每次匹配的子字符串。
【示例5】对于上面的示例,还可以进一步延伸,使用小括号来获取更多的匹配信息。例如,直接利用小括号传递单词的首字母,然后进行大小写转换处理,处理结果都是一样的。
var s = 'javascript is script , is not java.'; //定义字符串
var f = function ($1, $2, $3) { //定义替换文本函数,请注意参数的变化
return $2.toUpperCase()+$3;
}
var a = s.replace(八b(\w) (\w*)\b/g, f );
console.log( a );
在函数f()中,第1个参数表示每次匹配的文本,第2个参数表示第1个小括号的子表达式所匹配的文本,即单词的首字母,第2个参数表示第2个小括号的子表达式所匹配的文本。
点击加载更多评论>>