JavaScript中string.replace的一个特殊用法

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 5     <title></title>
 6     <script type="text/javascript">
 7         /*
 8                            这段代码是为JavaScript的String对象添加一个deentityfy 方法,
 9                            用以替换字符串中得HTML字符(把&quot;替换为”,&lt;替换为<,&gt;替换为>),
10                            */
11
12         //在String对象的原型中添加自定方法
13         String.prototype.LiminReplace = function () {
14             //定义要替换的Json对象
15             var RplJson = {
16                 //"First": "quot",
17                 //"Second": "lt",
18                 //"Third": "gt"
19                 "quot": ‘"‘,
20                 "lt": "<",
21                 "gt": ">"
22             };
23             return function () {
24                 //正则表达式详解:
25                 //[^&;]+   出现一次或多次除了&和;的字符
26                 //([^&;]+) 对它进行一个分组
27                 //&([^&;]+);   以&开头,以;结尾
28                 return this.replace(/&([^&;]+);/g, function (a, b, c, d) {
29                     //我们把方法的参数都打印出来,看看结果是什么
30                     for (var i = 0; i < arguments.length; i++) {
31                         console.log(arguments[i] + ‘<br/>‘);
32                     }
33                     console.log(‘===========================<br/>‘);
34
35
36                     //详解:
37                     //b参数,对应的是正则表达式中匹配的分组的内容,即第一个括号中的内容
38                     //举例:
39                     //如果传入的字符串是&quot;  那正则一匹配得到的第一个分组的内容就是quot,刚好是RplJson对象的Key值
40                     //如果传入的字符串是&lt;  那正则一匹配得到的第一个分组的内容就是lt,刚好是RplJson对象的Key值
41                     //如果传入的字符串是&gt;  那正则一匹配得到的第一个分组的内容就是gt,刚好是RplJson对象的Key值
42                     var rplStr = RplJson[b];
43
44                     //详解:
45                     //typeof (rplStr) == ‘string‘  判断rplStr的值类型是不是一个字符串
46                     //为什么要这么判断呢,
47                     //var rplStr = RplJson[b];   参数b作为key在RplJson中可能是不存在的,不存在,取出来的值肯定不是string类型了
48                     //如果key存在则返回RplJson对象中key对应的value,否则则不进行替换,返回原始字符串
49                     return typeof (rplStr) == ‘string‘ ? rplStr : a;
50                 });
51             }
52         }();      //这里自执行一下,否则就是返回函数了
53
54
55         window.onload = function () {
56             document.write("我的名字是&quot;Limin&quot;,年龄&lt;20,我的工资&gt;10000".LiminReplace());
57             //结果:
58             //我的名字是"Limin",年龄<20
59
60             //quot被执行了两次替换,打印两次,lt被执行了一次替换,只打印一次,gt被执行了一次替换,只打印一次
61             //function (a, b, c, d) 参数说明
62             //第一个参数很简单,是匹配字符串
63
64             //第二个很诡异,不过每个都看一遍不难得出,第二个参数是正则表达式括号内的匹配的内容(分组内容)
65
66             //第三个参数和容易想到,是匹配项在字符串中的index
67
68             //第四个参数则是原字符串
69
70         }
71     </script>
72 </head>
73 <body>
74
75 </body>
76 </html>

打印结果截图:
时间: 2024-11-03 22:02:09

JavaScript中string.replace的一个特殊用法的相关文章

JavaScript中String对象的match()、replace() 配合正则表达式使用

正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时,match()返回null,replace()返回原字符串. 正则表达式的模板对象 //标准写法 regexp = new RegExp(pattern[, flag]); pattern: 模板的用法是关键,也是本章的主要内容. flag: "i"(ignore)."g&quo

详解JavaScript中的replace()函数

Javascript中字符串对象有一个方法replace(),它的作用非常强大.这里把它的用法整理一下.  一.方法简介 该方法的签名是:replace([RegExp|String],[String|Function]). 该方法 返回一个新的字符串,但并不改变字符串本身. 该方法接收2个参数,第一个参数可以是字符串,也可以是一个正则表达式:第二个参数可以是一个字符串,也可以是一个函数.其中第2个参数如果是函数,那么用起来是十分强大而且灵活的,不过相对来说也比较难掌握.下面就其用法进行详细说明

Javascript中String对象的常用方法

charAt(): 返回在指定位置的字符. charCodeAt(): 返回在指定的位置的字符的 Unicode 编码. var s = "Smile forever!"; s.charAt(2); //i s.charCodeAt(2); //105 concat(): 连接字符串,参数可以是多个字符串. var s1 = "Smile forever!"; var s2 = "extend"; s1.concat(s2); //Smile f

在javascript中使用replace

javascript中使用replace功能很强大,不仅可以替换为字符串,还可以利用正则表达式,对匹配到的字符串为所欲为的进行操作,首先我们来了解一下replace的基本语法 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 语法 stringObject.replace(regexp/substr,replacement)  返回值 一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的

JavaScript中String对象处理HTML标记中文本的方法

big():创建一个<big></big>标记,将这个字符串的字体变大blink():创建一个<blink></blink>标记,使字符串具有闪烁效果bold():创建一个<bold></bold>标记,使字符串加粗显示fixed():创建一个<tt></tt>标记,使字符串固定倾斜显示italics():创建一个<i></i>标记,使字符串以斜体显示small():创建一个<sm

Javascript中String的valueOf方法

今天看了Javascript的基础教程,其中说了一个关于typeof的问题.typeof运算符的作用就是返回一个变量的类型,如果变量是一个数字,则返回number. 如果是字符串,则返回string, 布尔类型则返回boolean, 函数则返回function, 如果变量是null或者其他Javascript对象,就返回object. 未定义就返回undefined. 如果要判断变量存在,而且是一个字符串的话:给出的判断语句是: if( (typeof unknownVariable != "u

[Javascript] How to use JavaScript&#39;s String.replace

In JavaScript, you can change the content of a string using the replace method. This method signature is overloaded with a bunch of different ways to do string replacement in JavaScript. This lesson covers the entire API (including an interestingDSL 

JAVA中string.replace()和string.replaceAll()的区别及用法

乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),replaceall替换所有的字符,其实大不然,只是替换的用途不一样.    public String replace(char oldChar,char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的. 如 果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用.否则,创建一个新的

深入理解 JavaScript 中的 replace 方法(转)

replace方法是属于String对象的,可用于替换字符串. 简单介绍: StringObject.replace(searchValue,replaceValue) StringObject:字符串 searchValue:字符串或正则表达式 replaceValue:字符串或者函数 字符串替换字符串 JavaScript 1 'I am loser!'.replace('loser','hero')//I am hero! 直接使用字符串能让自己从loser变成hero,但是如果有2个lo