为啥我从 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章