我用的jq的text()方法会将空格包含在内,可不可以像html那样将多个空格转为1个空格,不然切割字符串会不准确。
闭关修行中......
这是一个典型的x/y问题,lz还是直接说你的需求是什么,而不是为了完成你的切割字符串需求而把问题弄复杂的“有多少字符参加了渲染”
为了让你死心,我列举一些点吧:
white-space:pre;
 
	

​



想要严格的执行标准来做空格的折叠绝非是一个str.split(/\s+/)这么简单,需要综合考虑white-space的属性,了解哪些符号在什么情形被丢弃,这个算法很复杂,我在这里翻译了相关标准; 如果是切割字符串,那么大部分时候str.split(/\s+/)都是够用的。
str.split(/\s+/)
文字排印是浏览器渲染里非常复杂的一个话题,空格折叠只是其中一个棱面。
参照 @jesusslim 同学的思路,和根据题主的问题描述,如下:
javascriptvar str = $('p').text(); str = str.replace(/\s+/g, function () { return ' '; }); alert(str.length);
javascript
var str = $('p').text(); str = str.replace(/\s+/g, function () { return ' '; }); alert(str.length);
不知道你的文字具体格式是什么。 先假象下,如果你的字符串是'abcd efsef easdas laskdpoq ' 这样的话,你可以循环Replace,两个空格替换成一个空格,最终可以完成所有的地方都实现多个空格转为一个空格。
有其他情况,再说。
js虽然没有内置的trim去空格但有很多trim的正则实现 可以考虑下
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery.trim demo</title> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <pre id="original"></pre> <pre id="trimmed"></pre> <script> var str = " lots of spaces before and after "; $( "#original" ).html( "Original String: '" + str + "'" ); $( "#trimmed" ).html( "$.trim()'ed: '" + $.trim(str) + "'" ); </script> </body> </html>
JQuery trim
这是一个典型的x/y问题,lz还是直接说你的需求是什么,而不是为了完成你的切割字符串需求而把问题弄复杂的“有多少字符参加了渲染”
为了让你死心,我列举一些点吧:
white-space:pre;
就不会折叠 
,ASCII 制表符	
,ASCII 换页符
,零宽度空格​
都算空格符,而在css渲染的时候,折行的两个符号
和

也算空格符想要严格的执行标准来做空格的折叠绝非是一个
str.split(/\s+/)
这么简单,需要综合考虑white-space的属性,了解哪些符号在什么情形被丢弃,这个算法很复杂,我在这里翻译了相关标准;如果是切割字符串,那么大部分时候
str.split(/\s+/)
都是够用的。文字排印是浏览器渲染里非常复杂的一个话题,空格折叠只是其中一个棱面。
参照 @jesusslim 同学的思路,和根据题主的问题描述,如下:
不知道你的文字具体格式是什么。
先假象下,如果你的字符串是'abcd efsef easdas laskdpoq '
这样的话,你可以循环Replace,两个空格替换成一个空格,最终可以完成所有的地方都实现多个空格转为一个空格。
有其他情况,再说。
js虽然没有内置的trim去空格但有很多trim的正则实现 可以考虑下
JQuery trim