是否可以为 string.Trim() 添加字符(而不是替换默认值)?

Is it possible to add characters (instead replace defaults) for string.Trim()?

我想 trim 默认为白色-space 字符和我的其他字符。我通过以下方式做到了这一点:

string MyTrim(string source)
{
    char[] badChars = { '!', '?', '#' };
    var result = source.Trim().Trim(badChars);
    return result == source
         ? result
         : MyTrim(result);
}

对我来说,它看起来很愚蠢,因为它的迭代次数超过了它需要的次数。是否可以为 string.Trim() 添加字符(而不是替换默认值)?或者我在哪里可以找到默认在 string.Trim() 中使用的 'default white-space characters' 数组?听起来很简单,但我找不到。

无法更改 Trim 的默认行为。

但是,如果必须的话,您可以创建一个包含所有要修剪的字符的数组,这样您就可以将调用次数减少到一次调用,但是它会像这样:

var badChars =
    (from codepoint in Enumerable.Range(0, 65536)
     let ch = (char)codepoint
     where char.IsWhiteSpace(ch)
           || ch == '!' || ch == '?' || ch == '#'
     select ch).ToArray();

这会给你 1 次呼叫 Trim:

var result = source.Trim(badChars);

理想情况下,您可以将 badChars 存储在某处,这样您就不必一直构建它。

现在,这会比两次调用更快吗?我不知道,但如果有必要,我会测量它。

无法直接添加其他字符。

但是,空白字符列表已定义 here in the remarks,您可以根据提供的所有枚举创建一个静态助手列表。

除非您要解析巨大的字符串,否则可能不值得为了节省字符串的第二次传递而付出努力。