作者:王先榮
結論
javascript擷取到textarea文字框中的字串中,如果包含有斷行符號分行符號,在字串中表現為“\n”,而不是我們通常所見的“\r\n”。
發現問題
今天在做小網站的時候,需要將使用者輸入的英文分號、中英文逗號及斷行符號都替換成中文分號,在編javascript函數的過程中,總是無法正確的替換斷行符號。
例如:使用者在textarea中輸入:
測試字串1
測試字串2
我們將textarea中的輸入字串儲存到變數content中,下面的替換語句不會將斷行符號替換成中文分號。
content = content.replace("\r\n",";");
解決問題
通過google大法(在google中搜尋索引鍵“javascript substr \r\n”),找到了Ben先生的文章《Ask Ben: Javascript Replace And Multiple Lines / Line Breaks》,裡面有非常詳細的解釋。
拓展
如果我們要擷取使用者在textarea中輸入的斷行符號位置,需要使用類似下面的代碼:
var pos = content.indexOf("\n");
如果我們需要將斷行符號替換為別的字元,例如分號,需要使用類似下面的代碼:
content = content.replace("\n",";");
完整代碼
本文的完整代碼如下所示:
//用中文分號替換英文分號、中英文逗號或者斷行符號 function ReplaceSeperator(mobiles) { var i; var result = ""; var c; for (i = 0; i < mobiles.length; i++) { c = mobiles.substr(i, 1); if (c == ";" || c == "," || c == "," || c == "\n") result = result + ";"; else if (c != "\r") result = result + c; } return result; }