摘要:一般使用使用正則循環替換如下這種情況,表情標簽的替換,我們需要正常的字符串替換,例如結合實現。
一般使用
var str = "test-test-test"; str = "test-test-test".replace("test", "ok"); console.log(str);
使用正則:
var str = "test-test-test"; str = "test-test-test".replace(/test/g, "ok"); console.log(str);循環替換
如下這種情況,表情標簽的替換,我們需要正常的字符串替換,例如結合 while + indexOf 實現。
var faces = { "/::)": "weixiao", "/::~": "pizui", "/::B": "se", "/::|": "fadai", "/:8-)": "deyi", "/::<":"liulei", "/::$": "haixiu", "/::"(": "daku", "/::-|": "gangga" }; var str = "/::)-/::B-/::)-/:8-)-/:8-)"; for (var k in faces) { while(str.indexOf(k) > -1) { str = str.replace(k, faces[k]); } } console.log(str);
這樣,基本功能實現,不過這是有問題的,如果有一個鍵值相同的,就會死循環例如:
var faces = { "/::)": "weixiao", "/:hehe": "/:hehe" }; var str = "/::)-/::B-/:hehe-/:8-)-/:8-)"; for (var k in faces) { while(str.indexOf(k) > -1) { str = str.replace(k, faces[k]); } } console.log(str);
修改為如下代碼解決死循環問題:
var faces = { "/::)": "weixiao", "/:hehe": "/:hehe" }; var str = "/::)-/::B-/:hehe-/:8-)-/:8-)"; for (var k in faces) { var p = -1; // 字符出現位置 var s = 0; // 下一次起始位置 while((p = str.indexOf(k, s)) > -1) { s = p + faces[k].length; // 位置 + 值的長度 str = str.replace(k, faces[k]); } } console.log(str);
再進行簡單封裝一下:
/** * 字符串替換 * @param {string} str 要被替換的字符串 * @param {string} substr 要替換的字符串 * @param {string} newstr 用于替換的字符串 * @return {string} 替換后的新字符串 */ function replace(str, substr, newstr) { var p = -1; // 字符出現位置 var s = 0; // 下一次起始位置 while((p = str.indexOf(substr, s)) > -1) { s = p + newstr.length; // 位置 + 值的長度 str = str.replace(substr, newstr); } return str; } console.log( replace("ssssss", "ss", "s") ); // sss使用RegExp封裝
/** * 字符串替換 * @param {string} str 要被替換的字符串 * @param {string} substr 要替換的字符串 * @param {string} newstr 用于替換的字符串 * @return {string} 替換后的新字符串 */ function replace(str, substr, newstr) { substr = substr.replace(/[.[]{}()|^$?*+]/g, "$&"); // 轉義字符串中的元字符 var re = new RegExp(substr, "g"); // 生成正則 return str.replace(re, newstr); } console.log( replace("ssssss", "ss", "s") ); // sss
參考地址:http://www.52cik.com/2015/11/...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93313.html
摘要:然而,不會在年的基礎上加,而只是表示年。閉包這是一個經典的面試題雖然期望輸出,然而實際上卻不會。因為第行的沒有在正確的環境下執行。 譯者按: 漫漫編程路,總有一些坑讓你淚流滿面。 原文: Who said javascript was easy ? 譯者: Fundebug 為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用于學習。 這里我們針對JavaScri...
摘要:用法介紹注為的實例為的實例用法說明返回值判斷是否包含匹配結果包含返回,不包含返回。當為全局的對象的時候,替換每一項匹配項。如下表所示,它說明從模式匹配得到的字符串將用于替換。字符替換文本與中的第到第個子表達式相匹配的文本。 上面這四個方法在js中用的很多,但有時對它們又不清晰,所以有必要來總結一下。 對了,這篇文章可能會涉及到正則表達式相關知識,所以推薦沒有正則基礎的去看看這篇入門文章...
摘要:正則表達式理論基礎篇搬運自個人博客原址正則表達式理論基礎篇什么是正則表達式可以稱作規則一個描述字符模式的對象,正則表達式中的字母和數字,都是按照字面含義進行匹配的。 正則表達式-理論基礎篇 搬運自個人博客,原址正則表達式-理論基礎篇 什么是正則表達式?可以稱作規則一個描述字符模式的對象,正則表達式中的字母和數字,都是按照字面含義進行匹配的。強大的字符串匹配工具 如何建立一個正則表達式...
摘要:正則表達式理論基礎篇搬運自個人博客原址正則表達式理論基礎篇什么是正則表達式可以稱作規則一個描述字符模式的對象,正則表達式中的字母和數字,都是按照字面含義進行匹配的。 正則表達式-理論基礎篇 搬運自個人博客,原址正則表達式-理論基礎篇 什么是正則表達式?可以稱作規則一個描述字符模式的對象,正則表達式中的字母和數字,都是按照字面含義進行匹配的。強大的字符串匹配工具 如何建立一個正則表達式...
閱讀 2419·2021-10-11 10:57
閱讀 1274·2021-10-09 09:59
閱讀 1986·2019-08-30 15:53
閱讀 3206·2019-08-30 15:53
閱讀 1001·2019-08-30 15:45
閱讀 727·2019-08-30 15:44
閱讀 3433·2019-08-30 14:24
閱讀 946·2019-08-30 14:21