【JavaScript】JavaScript中的replaceAll

JavaScript中是没有replaceAll的,只有replace,replace只能替换字符中的第一个字符,而且这个replace里面不支持正则表达式,以达到replaceAll的目的。

不过可以自己写一个JavaScript中的replaceAll,也不用写到str.replaceAll,一点就能够用的程度的程度,写一个返回值为字符串类型、处理之后的字符串;形式参数为要处理的字符串,要被替换的东西、要被替换成的东西的函数就可以了。

写好一个JavaScript中的replaceAll可以对某些多行文本框从数据库读取数据,之后清理多行文本框不能被javascript中清理HTML函数,详见《【JavaScript】某些字符不转义可以导致网页崩溃与涉及转义字符的显示方法》(点击打开链接),把<BR>清理成\r\n的问题,从而在多行文本框正常显示的问题。这多见于一些编辑功能。

JavaScript的replaceAll函数如下:

function replaceAll(str,replaced,replacement){
	var reg=new RegExp(replaced,"g");
	str=str.replace(reg,replacement);
	return str;
}

具体使用方式用一个例子来说明这个函数的利用,

比如网站有如下的表单,显示如同word中的替换功能。

这个网页的布局如下,很简单,请注意里面的ID即可:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>replaceAll</title>
</head>

<body>
<textarea id="str"></textarea><br />
把<input type="text" id="replaced" />替换成<input type="text" id="replacement" /><button onclick="replaceAllTest()">go!</button>
</body>
</html>

GO按钮首先调用脚本中的replaceAllTest函数,把文本框中的内容,被替换的内容,要替换的内容拿过来。直接调用上文的replaceAll()函数,完成替换得到的字符串,则替换文本框中的文本即可。

<script>
function replaceAllTest(){
	var str=document.getElementById("str").value;
	var replaced=document.getElementById("replaced").value;
	var replacement=document.getElementById("replacement").value;
	str=replaceAll(str,replaced,replacement);
	document.getElementById("str").value=str;
}
function replaceAll(str,replaced,replacement){
	var reg=new RegExp(replaced,"g");
	str=str.replace(reg,replacement);
	return str;
}
</script>
时间: 2024-10-06 01:37:22

【JavaScript】JavaScript中的replaceAll的相关文章

实用篇:说说我在JavaScript项目中使用的工具类

在JavaScript的开发中,我们都会写一些工具类来帮我们简化一些业务操作的逻辑,一下就貼几个我在项目开发过程中常用的工具类.表达能力有限,各位看官还是看源码吧. 一.日期处理工具类. /** * 日期处理工具类 * @Authors: jackyWHJ * @date 2013-10-18 * */ var DateUtils = { /** * 得到日期在一年当中的周数 */ getISOYearWeek: function(date) { var commericalyear = thi

javascript (js)中的基本概念

1. 基本数据类型 1.1 number (数字)在js中没有整形和浮点型的区分,所有的数字都是浮点型标识, 采用64位的浮点格式来表示数字.如果数字类型用在字符串连接表达式中,则会自动转换成字符串, 在JS中表示16进制通过在数字前加"0x"或"0X"(零). 1.2 string (字符串)字符串类型是实用单引号('')或双引号("")括起来的unicode字符序列, 一些特殊的字符可以通过转义符来标识.如果字符串用在数字表达式环境中,字符串

JavaScript语法中分号使用的细节

关于JavaScript中可选分号的问题有几个细节要注意: 一般来说,JavaScript和其他语言一样都是使用分号,将语句隔开,但在JavaScript中,如果语句各自独立一行,有时也可以省略分号的 细节1: 如果当前语句和随后的非空格字符不能当成一整体来解析的话,JavaScript就在当前语句行结束处自动填补分号 var a a = 3 console.log(a); JavaScript将上述代码解析为: var a; a=3; console.log(a); 第一行代码 var a自动

你不知道的javascript(中卷)笔记

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>你不知道的javascript(中卷)</title> </head> <body> <script type="text/javascript"> /* //封装对象包装 var a = new Boolean(false); if(!a)

JavaScript ES6中export及export default的区别

相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在JavaScript ES6中,export与export default均可用于导出常量.函数.文件.模块等,你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用,但在一个文件或模块中,export.import可以有多个,export default仅有一个. 具体使用: 1. //demo1.js export con

javascript语言中的毒瘤(上)

javascript语言中的毒瘤(上) 最近翻了<javascript语言精髓>,对js有了更进一步的了解,特别是js的糟糕特性,下面,结合书中的要点,给大家分享一下js的几个糟糕特性. 全局变量 全局变量实在所有作用域均可以访问的变量,在一些小型项目中全局变量给我们获取和使用函数,数据等提供了灵活,便捷:但是随着程序的越来越庞大,全局变量就变得越来越难维护:(因为一个变量可能会在很多地方被修改,还有可能被覆盖),一旦出现问题也很难定位和调试. Js的问题不仅在于它容许使用全局变量,而且在于它

javascript语言中的毒瘤(下)

javascript语言中的毒瘤(下) 伪数组 Js中没有正真意义上的数组:这使得数组的使用非常容易,你不必给他们设置维度:而且永远不会产生越界错误:但它的性能相比正真的数组就糟糕了: Typeof 运算符不能辨别数组和对象,要判断一个值是否为数组,你还需要检查它的construtor属性:(也可以使用instanceof) function isArr(my_value) { if(my_value&& typeof my_value === 'object' && my

稍微谈一下 javascript 开发中的 MVC 模式

随着前台开发日益受到重视,客户端代码比重日益增加的今天,如何在javascript开发里应用MVC模式,这个问题似乎会一直被提到,所以偶在这里粗略的谈一下自己的看法吧. MVC模式的基本理念,是通过把一个application封装成model, view和controller三个部分达到降低耦合,简化开发的目的.这么说很空洞,大家可以实际看个例子: 1<select id="selAnimal"> 2    <option value="cat"&

javascript学习中自己对作用域和作用域链理解

在javascript学习中作用域和作用域链还是相对难理解些,下面我关于javascript作用域和作用域链做一下详细介绍,给各位初学者答疑解惑. 首先我们介绍一下什么是作用域?  从字面上理解就是起作用的区域.   作用域主要有两种作用域:      1.块级作用域(js 不支持):主要用于C系列语言中,例如:Java Object-c/Swift(苹果开发语言).C++/C#.在此不做过多说明.      2.词法作用域  一个变量的作用范围,在代码写出来的那一刻就定下来了,不会根据代码的运