erd*_*mke 14
正如@EiríkrÚtlendi所指出的,接受的解决方案只考虑两个空格字符:水平制表符(U + 0009)和空格(U + 0020).它不考虑其他空白字符,例如非破坏空格(恰好在我试图处理的文本中).维基百科上包含更完整的空白字符列表,并在链接的Perl答案中引用.可以使用字符类减法构建一个简单的C#解决方案来解释这些其他字符
[\s-[\r\n]]
Run Code Online (Sandbox Code Playgroud)
或者,包括EiríkrÚtlendi的解决方案,你得到
[\s\u3000-[\r\n]]
Run Code Online (Sandbox Code Playgroud)
注:对于那些与CJK文本(中国,日本,和韩国的),双字节空间(统一\u3000)是不包含在\s为我试过到目前为止(Perl中,.NET,PCRE,Python)的任何实现。您需要首先对字符串进行规范化(例如将全部替换\u3000为\u0020),或者您必须使用包含此代码点的字符集以及您所针对的任何其他空格,例如[ \t\u3000].
如果您使用的是 Perl 或 PCRE,您可以选择使用水平空白的\h简写,它似乎包括单字节空间、双字节空间和制表符等。有关更多详细信息,请参阅匹配空格但不匹配换行符 (Perl)线程。
但是,据\h我所知,这种速记还没有针对 .NET 和 C# 实现。