用javascript將字串中的換行替換成html的換行

摘要:用javascript將字串中的換行替換成html的換行

update 2010/01/02 :

沒有很仔細的看資料.結果繞了很大一圈.
感謝91哥的提醒.
Replace的用法就如topcat文章所寫的,
replace的第一個參數是可以是字串或是regular expression.
如果使用字串,則會區分大小寫,且遇到第一個相符的字串後就會停止,
如果要不分大小寫或是要替換全部的相符的字串
則需要使用regexp.

因為目前只需要將全部相符的換行字元換掉,所以只需使用g這個modifier,

範例(將換行字元(\r\n)替換成html的換行標籤(<br />)):

strOrg = strOrg.replace(/\r\n/g,"<br />");

regexp的modifier說明

i Perform case-insensitive matching
g Perform a global match (find all matches rather than stopping after the first match)
m Perform multiline matchin

參考資料:

replace
http://www.w3schools.com/jsref/jsref_replace.asp

RegExp
http://www.w3schools.com/jsref/jsref_obj_regexp.asp

======================

update at 2009/12/31

感謝vdonkey提供更簡單的方法.

function ReplaceAll(strOrg,strFind,strReplace)
{
    return strOrg.replace(new RegExp(strFind,"g"),strReplace);
}

======================

因為要寫一個html即時預覽的功能,
所以需要一段程式是將javascript中的換行(\n)替換成html中的換行(<br />)
因為asp都是用replace替換,然後查一下javascript的手冊,也有replace的函數,
所以以為只要寫下面這段程式就可以了,

str = str.replace("\n","<br />")

只是這樣執行後竟然只有一個換行
這時才發現他的replace只會替換字串中第一個符合的字串,
所以只好自己在寫個替換全部符合字串的函數...

function ReplaceAll(strOrg,strFind,strReplace){
var index = 0;
while(strOrg.indexOf(strFind,index) != -1){
strOrg = strOrg.replace(strFind,strReplace);
index = strOrg.indexOf(strFind,index);
}
return strOrg
}

用法如下:

strTmp = ReplaceAll(strTmp,"\n","<br />");