MozTW 討論區 https://forum.moztw.org/ |
|
[問題]多重替代字串的寫法 https://forum.moztw.org/viewtopic.php?f=13&t=18167 |
第 1 頁 (共 1 頁) |
發表人: | legnaleurc [ 2007-03-25, 16:23 ] |
文章主題 : | [問題]多重替代字串的寫法 |
假設我現在用了正則表達式取得了一系列的字串來取代一個文本: 文本: var doc = 'Today is a good day.'; 腳本: var RE = /day|is/g; var strings = doc.match(RE); for(var i=0;i<doc.length;i++) { doc.replace(strings[i],'yes'+strings[i]); } 結果: Toyesyesday yesis a good day. 因為相同的day有兩次,但是每次使用replace它就會從最開始的地方取代 這種問題除了改善正則表達式之外要怎麼解決呢? |
發表人: | kourge [ 2007-03-25, 22:41 ] |
文章主題 : | |
var doc = 'Today is a good day'.replace(/(day|is)/g, '$1yes'); 這樣是不是你要的結果? |
發表人: | legnaleurc [ 2007-03-26, 11:01 ] |
文章主題 : | |
原來如此,$1~$9是給它匹配到的字串啊.... 完全不知道= = 如果超過9個呢? 或是正則表達式使用了很複雜的巢狀條件的時候? |
發表人: | kourge [ 2007-03-26, 14:37 ] |
文章主題 : | |
legnaleurc 寫: 原來如此,$1~$9是給它匹配到的字串啊....
完全不知道= = 如果超過9個呢? 或是正則表達式使用了很複雜的巢狀條件的時候? $nn 就行了。 我記得 replace() 的第二個參數還可以放函式來做進階代替。 用很複雜的巢狀條件還是會把每一對括號記住。 (x) (?:x) 前者會有群組+記住的功能,後者只有群組的功能。 |
發表人: | 訪客 [ 2007-03-26, 14:54 ] |
文章主題 : | |
http://developer.mozilla.org/en/docs/Co ... ng:replace http://developer.mozilla.org/en/docs/Co ... cts:RegExp |
發表人: | legnaleurc [ 2007-03-26, 19:42 ] |
文章主題 : | |
感謝解答 不過這部分是否會根據瀏覽器的不同而發生不同效果呢? 同樣的寫法在Firefox和Opera正常 但是IE只有部分作用 而Konqueror則是無法辦識$& |
發表人: | kourge [ 2007-03-27, 13:13 ] |
文章主題 : | |
legnaleurc 寫: 感謝解答
不過這部分是否會根據瀏覽器的不同而發生不同效果呢? 同樣的寫法在Firefox和Opera正常 但是IE只有部分作用 而Konqueror則是無法辦識$& 唉,不同實作的痛苦XD |
發表人: | legnaleurc [ 2007-03-27, 18:56 ] |
文章主題 : | |
kourge 寫: 唉,不同實作的痛苦XD
我比較好奇的是為什麼會發生這種事? 是因為瀏覽器支援的JavaScript不同? 還是對正則表達式的解釋有差距?(如Firefox會把全形空白歸入\s中,但是IE則視為不同的字元) 順便附上實作用的玩具網頁.... http://www.cs.ccu.edu.tw/~pwc94u/projects/codepage/ 把C/C++ CODE貼上就會做標色動作....(沒做得很詳細就是了) |
發表人: | kourge [ 2007-03-28, 14:10 ] |
文章主題 : | |
http://www.dreamprojections.com/SyntaxHighlighter/ http://www.mondotondo.com/aercolino/noteslog/?p=148 |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |