为啥我从 textarea 中提取换行符的方法是使用 \r [重复]

Posted

技术标签:

【中文标题】为啥我从 textarea 中提取换行符的方法是使用 \\r [重复]【英文标题】:Why is my way of extracting newlines from textarea working with \r [duplicate]为什么我从 textarea 中提取换行符的方法是使用 \r [重复] 【发布时间】:2020-01-04 05:53:48 【问题描述】:

如果我将textarea 的值设置为"123456\r123" 并调用document.getElementById('myTextarea').value.indexOf("\n"),它会返回6,这是换行符的位置;但是为什么不返回-1,因为字符串中没有\n

【问题讨论】:

你可以从这个 SO ***.com/questions/10376179/n-t-r-0-is-true" 链接得到你的答案 谢谢,例如+"\n" == +"\r"。但似乎indexOf 正在将字符/字符串作为数字进行比较......虽然它正在寻找字符串中的字符串?! 因为我们还有"\n" != "\r" 【参考方案1】:

我猜当您为 textarea 设置值时,浏览器会自动将“\r”转换为“\n”。 当我在浏览器中运行这些代码时,结果告诉我我猜的就是事实。

let textArea = document.getElementById("inputTextarea");

let value = "abcd\radc";

textArea.value = value;

let out = document.getElementById("outputPre");

document.getElementById("inputTextarea").addEventListener("click", () => 
    value = textArea.value;

    let chars = value.split("").map(s => s.charCodeAt(0));

    let lf = ["\r".charCodeAt(0), "\n".charCodeAt(0)];

    out.innerhtml = 'valueChars:<em>' + value.split("") + "</em><br/>ASCII:<em>" + chars.toString() + "</em>";
    /*valueChars:a,b,c,d,
    ,a,d,c ASCII:97,98,99,100,10,97,100,99*/

    console.info(lf); //13,10
);

【讨论】:

以上是关于为啥我从 textarea 中提取换行符的方法是使用 \r [重复]的主要内容,如果未能解决你的问题,请参考以下文章

HTML textarea 忽略第一个换行符,为啥?

textarea 按回车为啥不换行

javascript/html/php 捕获 textarea 中的换行符

保留 TextArea 中的换行符

textarea赋值时换行符无效的解决方法

HTML 在 textarea 中显示换行符