すべての空白文字?言語に依存しませんか?



All Whitespace Characters



解決:

特定の文字が空白文字として分類されるかどうかは、 キャラクターセット 使用されています。とはいえ、プログラミング言語が空白を構成するものを独自に定義できることは不可能ではありません。

最新の言語のほとんどは、Unicode文字セットを使用しています。 NS の定義があります スペース区切り文字 。内の任意の文字Zsカテゴリは スペース区切り文字



あなたはここで完全なリストを見ることができます。さらに、grepを実行できます; Zs;公式のUnicode文字データベースでそれらの文字を確認してください。このカテゴリの文字数は、新しいUnicodeバージョンが出現するにつれて増える可能性があるため、そのような文字がいくつ存在するかについては説明しません。 試み それらを一覧表示します。

に加えて Zs Unicode カテゴリー 、Unicodeも文字を定義します プロパティ 。 Unicodeで定義されているプロパティには、空白プロパティがあります。 Unicode 7.0以降、このプロパティを持つ文字には、カテゴリZのすべての文字といくつかの文字が含まれます。 制御文字 (U + 0009、U + 000A、U + 000B、U + 000C、U + 000D、およびU + 0085を含む)。ここのUnicode.orgで、whitespaceプロパティを持つすべての文字を見つけることができます。



現在、多くの言語は、現代の言語でさえ、次のような正規表現のための特別な記号を持っています。 sまたは[:space:]ただし、これらはASCIIセットの特定の文字のみを参照することに注意してください。一般的にこれらはに制限されています

  • スペース(コードポイント32、U + 0020)
  • TAB(コードポイント9、U + 0009)
  • 改行(コードポイント10、U + 000A)
  • LINE TABULATION(コードポイント11、U + 000B)
  • フォームフィード(コードポイント12、U + 000C)
  • キャリッジリターン(コードポイント13、U + 000D)

このリストは、スペース区切り文字(Z)だけでなく、「コントロール、その他」カテゴリ(Cc)からも含まれているため、興味深いものです。これは、プログラミング言語が「空白」という用語を使用するときに一般的に意味するものです。

したがって、空白文字の「完全なリスト」についての質問に答える最良の方法は、「意味によって異なります」と言うことです。 「古典的な空白」を意味する場合、それはおそらく上記の6文字です。より「モダン」なものが必要な場合は、UnicodeカテゴリZのすべての文字を使用した6つの文字の結合です。次に、他のブロック内も調べる必要がある場合があります(たとえば、JerryCoffinによる質問へのコメントで言及されているU + 1361)。それはあなたが何をしようとしているのかにもよる NS これらのスペース文字で。



最後にもう1つ、Unicodeにはまだ世界のすべての文字が含まれているわけではありません。それは成長し続けます。いつか新しいスペース文字が追加される可能性があります。今のところ、カテゴリーZ +クラシックが最善の策です。


現在、次の16進数の「コードポイント」を持つ25個のUnicode空白文字があります。

9、A、B、C、D、20、85、A0、1680、2000、2001、2002、2003、2004、2005、2006、2007、2008、2009、200A、2028、2029、202F、205F、3000

対応する10進値は次のとおりです。

9、10、11、12、13、32、133、160、5760、8192、8193、8194、8195、8196、8197、8198、8199、8200、8201、8202、8232、8233、8239、8287、12288

私はもともとUnicode.orgからこの情報を取得しましたが、古いリンクは機能するURLではなくなりました。ウィキペディアには、このテーマに関するすばらしいページがhttps://en.wikipedia.org/wiki/Whitespace_characterにあります。興味がある場合は、25文字も表示されます。 (私はこれらの文字が同じ文字であることを相互参照していませんが、ユニコードコンソーシアムがそれらの文字セットにそのような破壊的で大きな変更を加えていないことを信じています!)

今日、UnicodeのWebサイトで簡単なページを1つ見つけましたが、公式の立場を支持または主張するものというよりは、HTMLのドラフトページに少し似ています。しかし、それは、Unicodeがすべての空白文字が何であるかに関する公式の主張として以前に投稿したものと一致します。 (リンクは私の答えの下の私のコメントにあります。)