工作中经常会对字符串进行处理,因为存在很多类型的原因,比如空格,可以是中英文空格,也能是HTML的 (看起来也是空格,但是看起来同样的字段,如果空格是 的话,在数据库是查不到数据的),所以用得非常多的一个方法就是replace()方法,接下来就对这个方法进行一个小结。
str.replace(str1,str2)
str1是str中想要替换的字符串,str2是替换str1的字符串。
常用的情况比如:
1.去除字符串中的空格
str.replace(" ","")
2.去掉字符串中某个特定字符
str.replace(/特定字符/,"") //如果想要替换整个字符串中的该特定字符,就在正则后面加g,str.replace(/特定字符/g,"")
3.去掉字符串中HTML占位符 和</br>
var htm1 = s.replace(/ /ig,''); //
var htm2 = editorTwo.html().replace(/(^\s*)|(\s*$)/g, ""); //</br>
4.去掉字符串中所有的空格,包括最上面我说过的看起来是空格,但是是 ,但是用户又看不到 的字符串
str.replace(/\s|\xA0/g,""); //亲测是真的好用,想了很多方法解决那个实际上是 看起来是空格的字符串,这个正则好用
在网上看到几个非常好的例子,在这里引用一下
字符串:const str='abc1314520def';
-------------------------------------------------------------------------------------------------------
str.replace(/\D/g,'');/*\D非数字,g全局匹配,每个地方都匹配一次*/
结果:
'1314520'
------------------------------------------------------------------------------------------------------
str.replace('abc','');/*直接用字符串匹配*/
结果:
'1314520def
-------------------------------------------------------------------------------------------------------
str.replace(/\D/g,function(rs){return rs.toUpperCase()})
结果:
'ABC1314520DEF'
/*第二个参数可传入函数,会对每个匹配到的字符串'rs'做一次处理,然后你可以将结果return 出来*/
-------------------------------------------------------------------------------------------------------
(还没有看懂的用法)进阶用法:将网址查询的search部分转化为键值对(就是url问号后面的东西)
function parseURL(url=window.location.href){/*es6语法直接设置默认值*/
const search = url.substr(url.indexOf('?')+1);
const obj={};
search.replace(/([^&=]+)=([^&=]*)/g,function(rs,$1,$2){
obj[decodeURIComponent($1)]=decodeURIComponent($2)
})
return obj
}
$1——$99就是匹配第1到第99个子表达式的文本,表达式1:'([^&=]+)',表达式2:'([^&=]*)'等等*/
/*这里我们没有用到rs 只是为了占位而已,因为第一个参数默认为rs*/