2016-08-20 5 views
0

私はむしろこの1つに困惑しています。 JavaScriptライブラリから文字列値を取得します。私はmyStringVar = myStringVar.trim()と呼んでいますが、私がmyStringVar.substring(0,1)をすると、それは私に空の文字列を与えます。 var arr = myStringVar.split('')と呼び出すと、配列の最初の要素は空文字列になり、arr [0] .trim()。lengthを呼び出すと、0ではなく1が返されます。Javascript "" .lengthは0ではなく1を返します

enter image description here

私は何かが足りないのですか?コメントや回答、私は文字列の先頭に非視覚的なUnicode文字の存在にまで問題を特定することができた後

EDIT 。私は今、文字列からそれらの文字を削除する方法を見つけようとします....または、文字列のうち興味のある部分を抽出する方がよいでしょう。 助けてくれてありがとう。

+8

'string.charCodeAt(0)'を試してください。それは何と言いますか? (あなたの文字列には見えないUnicode文字がいくつかあるかもしれないと思われます) – Frxstrem

答えて

3

これはおそらく、あなたの文字列には見えないUnicode文字(たとえば、"⁣"、U + 2063 INVISIBLE SEPARATOR)があります。
このような文字だけを含む文字列は、ユーザ(またはプログラマ)に空の文字列のように見えますが、文字を含んでいるため長さが1になります。

この場合にテストする簡単な方法の1つは、文字列内の文字のUnicode文字コードをstring.charCodeAt(0)で取得することです。 Unicodeテーブル(this oneなど)でこの値を調べることができます。これは、文字列に目に見えない文字があるかどうかを示すはずです。

+0

あなたの説明は間違いありませんが、本当ならば迷惑になります - 'INVISIBLE SEPARATOR'は正確には' trim() 'のように見えます取り除く。 –

+0

@ChristianTernus私は、 '' trim() 'は空白を削除するだけだと思う​​が、' 'INVISIBLE SEPARATOR'(http://unicode-table.com/en/2063/)は、"一般的な句読点 " Unicode空白のChromeでは、少なくとも 'trim()'は 'INVISIBLE SEPARATOR'を削除しません。 – Frxstrem

+1

@ChristianTernusトリムは、目に見えないセパレータを取り除きません。このリストのすべてを取り除きます:http://www.ecma-international.org/ecma-262/6.0/#sec-white-space、「その他のカテゴリ」には、これらの文字(すべての空白が表示されます)が含まれています。 //www.fileformat.info/info/unicode/category/Zs/list.htm。改行、改行、行区切り、段落区切りも取り除きますが、その一覧は網羅的です。 – Paulpro

関連する問題