是否可以为 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,您可以根据提供的所有枚举创建一个静态助手列表。
除非您要解析巨大的字符串,否则可能不值得为了节省字符串的第二次传递而付出努力。
我想 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,您可以根据提供的所有枚举创建一个静态助手列表。
除非您要解析巨大的字符串,否则可能不值得为了节省字符串的第二次传递而付出努力。