开发者社区> 问答> 正文

js怎样获得准确的字符串长度

我用的jq的text()方法会将空格包含在内,可不可以像html那样将多个空格转为1个空格,不然切割字符串会不准确。

展开
收起
小旋风柴进 2016-03-26 09:50:07 1951 0
1 条回答
写回答
取消 提交回答
  • 这是一个典型的x/y问题,lz还是直接说你的需求是什么,而不是为了完成你的切割字符串需求而把问题弄复杂的“有多少字符参加了渲染”

    为了让你死心,我列举一些点吧:

    在生成文档树的parse阶段时不会对空格符做折叠的,而dom接口都仅仅是对文档树的内容,有多少空格一定会返回多少空格
    对空格的折叠行为发生在渲染这一步,这个规则由white-space规则给出
    不是所有情况下空格都会被折叠的,比如white-space:pre;就不会折叠
    “空格符”不仅仅包括空格哟,在html定义的范围内,ASCII 空格 ,ASCII 制表符 ,ASCII 换页符 ,零宽度空格 ​都算空格符,而在css渲染的时候,折行的两个符号 和 也算空格符
    想要严格的执行标准来做空格的折叠绝非是一个str.split(/s+/)这么简单,需要综合考虑white-space的属性,了解哪些符号在什么情形被丢弃,这个算法很复杂,我在这里翻译了相关标准;
    如果是切割字符串,那么大部分时候str.split(/\s+/)都是够用的。

    文字排印是浏览器渲染里非常复杂的一个话题,空格折叠只是其中一个棱面。

    2019-07-17 19:15:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript函数 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载