有没有更好的方法来修剪字符串中的空格和其他字符?

Ric*_*ano 4 c# whitespace trim

例如,如果我想从字符串中删除空格尾随逗号,我可以这样做:

String x = "abc,\n";
x.Trim().Trim(new char[] { ',' });
Run Code Online (Sandbox Code Playgroud)

哪个输出abc正确。我可以很容易地将它包装在一个扩展方法中,但我想知道是否有一种内置的方法可以通过Trim()对我缺少的单个调用来做到这一点。我习惯了 Python,在那里我可以这样做:

import string
x = "abc,\n"

x.strip(string.whitespace + ",")
Run Code Online (Sandbox Code Playgroud)

文档指出所有Unicode 空白字符(除少数例外)都被剥离(参见调用者注释部分),但我想知道是否有一种方法可以在不手动定义扩展方法中的字符数组的情况下执行此操作。

有没有内置的方法来做到这一点?我想删除的非空白字符的数量可能会有所不同,不一定包含逗号,我想删除所有空格,而不仅仅是\n.

Chr*_*nte 5

是的,你可以这样做:

x.Trim(new char[] { '\n', '\t', ' ', ',' });
Run Code Online (Sandbox Code Playgroud)

由于换行符在技术上是一个字符,因此您可以将其添加到数组中并避免两次调用Trim.

编辑

.NET 4.0 使用此方法来确定字符是否被视为空格。早期版本维护一个空白字符的内部列表(Source)。

如果您真的只想使用一次Trim调用,那么您的应用程序可以执行以下操作:

  1. 在启动时,扫描Unicode 空白字符的范围,调用Char.IsWhiteSpace每个字符。
  2. 如果方法调用返回 true,则将字符推送到数组中。
  3. 也将您的自定义字符添加到数组中

现在您可以Trim通过传递您构造的数组来使用单个调用。

我猜这Char.IsWhiteSpace取决于当前的语言环境,所以你必须特别注意语言环境。