2017-10-13 65 views
0

我有一個字段,用戶可以輸入一些文本,這些文本將顯示在頁面上的另一個div中。它也被保存到數據庫(MSSQL)。爲什麼我無法用Typescript替換換行符(Javascript)

當刷新頁面時,保存的文本將被加載並且可以被編輯。一旦文本被編輯,div也將實時更新。爲了讓linebreaks工作,我做了一個快速換行方法,應該涵蓋所有換行符的情況。

let content = Tooltip.GetText(); // Tooltip is a Devexpress Memo Control 
let content1 = content.replace("\r\n", "<br />"); 
let content2 = content1.replace("\n\r", "<br />"); 
let content3 = content2.replace("\n", "<br />"); 
let content4 = content3.replace("\r", "<br />"); 

雖然這將適用於從數據庫加載的換行符,但它不適用於用戶剛剛輸入的換行符。但是,換行將在刷新頁面後生效。

這是我當前調試結果的屏幕截圖。您可以清楚地看到,兩個換行符中的第一個被換掉了,但不是第二個。我想明白爲什麼。
My debug result

我試圖調試內容從控制檯到記事本++複製到看看具體的角色,但它看起來像Notepadd ++,Windows或Chrome複製時更改數據。記事本+ +將顯示兩種\n\r

回答

1

嘗試這樣的:

let content1 = content.replace(/\r\n/g, "<br />"); 
let content2 = content1.replace(/\n\r/g, "<br />"); 
let content3 = content2.replace(/\n/g, "<br />"); 
let content4 = content3.replace(/\r/g, "<br />"); 

你的問題是,除非你通過與全球國旗的正則表達式.replace函數替換僅僅是第一次出現。

+0

謝謝!你救了我的一天! – Mischa

相關問題