我注意到这种“有趣”的行为。假设您有一个<div id="editableDiv" contenteditable="true"></div>
并且你想得到它的值(在这种情况下,假设你的值类似于'hello'(带有尾随空格)。Afterwars,你想使用split()将该字符串转换为数组:
var string = window.getSelection().anchorNode.data // hello_ (_ means whitespace)
var myArray = string.split(' ') // ['hello '] -> includes whitespace!
但是,当您操纵字符串而不必通过可编辑的div获取该值时,一切都正常。
为什么以及如何强制尾随空格在结果数组(['hello', ''])
中生成另一个空值?
由于
答案 0 :(得分:3)
问题是来自可编辑div的尾随空格似乎是字符160,它是一个不间断的空间,而不是字符32,它是一个“正常”空间。您可以通过拆分匹配“普通”空格或字符160的正则表达式来解决此问题,如下所示:
var string = window.getSelection().anchorNode.data;
var myArray = string.split(/ |\u00A0/);
console.log(myArray);
答案 1 :(得分:0)
在拆分之前检查字符串是否有空格,如果是,则正常拆分并将其添加到包含空格的数组中..
...
var splitted;
var array[];
String whitespace = "";
if(string.contains("")){
splitted = string.split("");
array.insert(splitted,whitespace);
}
array.insert(splitted);
代码只是来自我的幻想,我不是编码大师,但你可以吗?