1

我注意到了这种“有趣”的行为。假设你有一个<div id="editableDiv" contenteditable="true"></div>

并且您想获取它的值(在这种情况下,假设您的值类似于“hello”(带有尾随空格)。之后,您想使用 split() 将该字符串转换为数组:

var string = window.getSelection().anchorNode.data // hello_ (_ means whitespace)
var myArray = string.split(' ') // ['hello '] -> includes whitespace!

但是,当您操作字符串而不必通过可编辑的 div 获取该值时,一切都会照常进行。

为什么以及如何强制尾随空格在结果数组中产生另一个空值(['hello', ''])

谢谢

4

2 回答 2

3

问题是可编辑 div 的尾随空格似乎是字符 160,它是一个不间断的空格,而不是字符 32,它是一个“正常”空格。您可以通过拆分匹配“正常”空格字符 160 的正则表达式来解决此问题,如下所示:

var string = window.getSelection().anchorNode.data;
var myArray = string.split(/ |\u00A0/);
console.log(myArray);

演示:http: //jsfiddle.net/zgXUp/2/

于 2012-07-15T00:51:05.633 回答
0

在拆分之前检查字符串是否有空格,如果是,则正常拆分并将其添加到包含空格的数组中..

...
var splitted;
var array[];
String whitespace = "";
if(string.contains("")){
  splitted = string.split("");
  array.insert(splitted,whitespace);
 }
array.insert(splitted);

代码只是我的幻想,我不是编码大师,但你可以吗?

于 2012-07-15T00:03:18.797 回答