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

时间:2015-04-16 13:17:47

标签: c# .net trim

我想修改默认的空白字符和我的附加字符。我按照以下方式做到了这一点:

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

至于我,它看起来很愚蠢,因为它有更多的迭代次数。是否可以为string.Trim()添加字符(而不是替换默认值)?或者我在哪里可以找到一系列默认的空白字符'哪个在string.Trim()中默认使用?这听起来很容易,但我找不到。

2 个答案:

答案 0 :(得分:10)

无法更改Trim的默认行为。

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

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

这会给你一个Trim的电话:

var result = source.Trim(badChars);

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

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

答案 1 :(得分:1)

无法直接添加其他字符。

但是,空格字符列表定义为here in the remarks,您可以从提供的所有枚举中创建静态帮助列表。

除非您正在解析大量字符串,否则可能不值得为字符串保存第二遍。