我想默认修剪空白字符和其他字符。我是通过以下方式做到这一点的:

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

对我来说,这看起来很愚蠢,因为它的迭代次数超过了需要。是否可以为string.Trim()添加字符(而不是替换默认值)?还是在哪里可以找到默认情况下在string.Trim()中使用的“默认空白字符”数组?听起来很简单,但我找不到。

最佳答案

无法更改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存储在某个地方,这样就不必始终构建它。

现在,这会比两个电话快吗?我不知道,但如有必要,我会进行衡量。

关于c# - 是否可以为string.Trim()添加字符(而不是替换默认值)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29675925/

10-11 11:24
查看更多