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 の末尾のスペースが、「通常の」スペースである文字 32 ではなく、改行なしのスペースである文字 160 のように見えることです。次のように、「通常の」スペースまたは文字 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 に答える