JS 比较字符串与换行符

JS comparing strings with line breaks

我正在尝试比较两个相等的字符串:一个 textarea 值(或 textContent,或 innerHTML)和一个作为属性存储在 Backbone 中的字符串模型,例如"A string↵with line break"。 而这个比较总是 returns false.
比较这些字符串的长度可以看出差异(存储的字符串长一个符号)。 问题是如何准备第一个字符串(从textarea中提取)使其完全等于第二个字符串(存储在模型中)。

P.S。他们都是typeof === 'string'.

P.P.S。 主要问题是如何在设置属性时让 Backbone 看到相等性:

this.model.set({ attr: textareaValue })

Backbone 在这种情况下使用 Underscore 的方法简单地比较两个字符串:

return '' + a === '' + b;

我在两个字符串上都应用了 encodeURIComponent:结果是 Some%0AtextSome%0D%0Atext。所以第二个有 \r 字符(由 Handlebars 渲染)。我应该在每个 \n 之前插入这个字符吗?

P.P.P.S。是的,这成功了:textarea.value.replace(/\n/gm, '\r\n');

我的第一个想法是从两个字符串中删除所有非字母字符,然后再进行比较。

str.replace(/[^a-zA-Z]/g, "");

问题出在 \r 个字符中:Handlebars 呈现的文本区域值是 Some\ntext,而存储在模型中的字符串是 Some\r\ntext)。 这成功了:textarea.value.replace(/\n/gm, '\r\n');