为什么我不能用 Typescript (Javascript) 替换换行符

Mis*_*cha 1 javascript replace devexpress typescript

我有一个字段,用户可以在其中输入一些文本,这些文本将显示在页面上的另一个 div 中。它还被保存到数据库 (MSSQL)。

刷新页面时,将加载保存的文本并可以对其进行编辑。一旦文本被编辑,div 也将实时更新。为了使换行符工作,我做了一个快速换行符替换方法,它应该涵盖所有换行符的情况。

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 />");
Run Code Online (Sandbox Code Playgroud)

虽然这适用于从数据库加载的换行符,但不适用于用户刚刚输入的换行符。但是,换行符将在页面刷新后起作用。

这是我当前调试结果的屏幕截图。您可以清楚地看到两个换行符中的第一个被替换了,但第二个没有被替换。我想明白为什么。
我的调试结果

我试图将调试内容从控制台复制到 Notepad++ 以查看特定字符,但看起来 Notepadd++、Windows 或 Chrome 在复制时更改了数据。Notepad++ 将同时显示\n\r

lil*_*zek 5

试试这个:

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 />");
Run Code Online (Sandbox Code Playgroud)

您的问题是该.replace函数仅替换第一次出现,除非您传递带有全局标志的正则表达式。