提问人:blueseal 提问时间:8/30/2023 最后编辑:blueseal 更新时间:8/30/2023 访问量:48
Chrome JavaScript 使用换行符以不同的方式呈现文本
chrome javascript renders text differently with newlines
问:
我的用例:我在互联网上的任何网站上选择文本,我希望网页中选定的文本被划分为段落,所以我使用两个来获取网页中的段落数。所以基本上我想要一个网站上的段落数。'\n'
我有带有双换行符的文本,但 javascript 客户端在渲染时删除了一些换行符。例如,此文本呈现为 ,因此当我复制文本并粘贴到某处时,我错过了换行符。something goes \n\n like this \n\n and but browser gives wrong result
something goes like this and but browser gives wrong result
我的用例:我希望网页上的文本被分成段落,所以我用鼠标选择文本并这样做: ,我没有得到换行符,似乎 javascript 或 HTML 或浏览器删除了字符。"entire web page text selection".split("\n\n)"
\n
我在 nodejs 环境和浏览器环境中得到了不同的结果,我成功地在这个:(上浪费了几个小时
在 nodejs 中,换行符 in 给出了正确的结果,但在 javascript(客户端)中给出了错误的结果\n
string.split
节点js,
const bodyText = "something goes \n\n like this \n\n and but browser gives wrong result when I select this text on a rendered web page"
console.log(bodyText.split("\n\n").length) //3
在浏览器 js 中,它失败了
const bodyText = "something goes \n\n like this \n\n and but browser giving wrong results when I select this text on a rendered web page "//rendered text on webpage removes \n
console.log(bodyText.split("\n\n").length) //1
我怎样才能达到同样的结果,有什么想法吗? 谢谢!
TL的;博士:I basically select text on any website to know how many paragraphs are in the content, so I'm clueless now.
答:
似乎没有问题。
使用 nodejs v18.14.2 和您提供的确切代码,输出为 .3
在 chrome 和 firefox 的控制台中,输出也是 .3
由于 nodejs 和浏览器 js 中的换行符工作方式不同,您面临的问题。 Node.js 将连续的换行符视为结果数组中的单独元素。 但是,在浏览器 JavaScript 中,HTML 将连续的换行符视为单个空格字符。 若要在 Node.js 和浏览器中实现一致的行为,可能需要考虑使用在这两种方案中一致工作的不同分隔符
const bodyText = "something goes \n\n like this \n\n and but browser gives wrong results";
// Use a custom delimiter
const delimiter = "|||";
const newBodyText = bodyText.replace(/\n\n/g, delimiter);
// Split the newBodyText using the custom delimiter
const paragraphs = newBodyText.split(delimiter);
console.log(paragraphs.length); // 3
评论
\n
\n \n \n
<pre>