回答:
文字クラスを使用する: [ \t]
\t
ですか?
@EiríkrÚtlendiが述べたように、受け入れられたソリューションでは、水平タブ(U + 0009)と改行スペース(U + 0020)の2つの空白文字のみが考慮されます。改行しないスペースなど、他の空白文字は考慮されません(これは、私が処理しようとしているテキストに含まれています)。より完全な空白文字のリストはウィキペディアに含まれており、リンクされたPerlの回答でも参照されています。これらの他の文字を説明する単純なC#ソリューションは、文字クラスの減算を使用して構築できます。
[\s-[\r\n]]
または、EiríkrÚtlendiのソリューションを含めて、
[\s\u3000-[\r\n]]
注: CJKテキスト(中国語、日本語、韓国語)を扱うユーザーの場合、これまでに試したどの実装(Perl、.NET、PCRE、Python)にも2バイトのスペース(Unicode \u3000
)は含まれていません\s
。最初に文字列を正規化する(すべて\u3000
をで置き換えるなど\u0020
)か、このコードポイントを含む文字セットを、ターゲットにする他の空白などに加えて使用する必要があります[ \t\u3000]
。
PerlまたはPCREを使用している場合は\h
、水平空白の省略形を使用できます。これには、特に、半角スペース、全角スペース、タブが含まれているように見えます。詳細については、「空白に一致するが改行(Perl)スレッドではない」を参照してください。
ただし、この\h
速記は、.NETとC#には実装されていません。
\h
(Java 8で導入)にはが含まれますが\u3000
、\s
UNICODE_CHARACTER_CLASSモード(Java 7で導入)を設定しない限り含まれません。
\h
。ただし、ここにリストに追加する必要がある場合に備えて、他の多くの空白文字があることを示しています。