这是string.TrimEnd中的一个bug吗?

3
"\u4000\f".TrimEnd(new char[0])

等于"\u4000"

我传递了一个空数组,根据MSDN文档,不应该删除任何内容,并且应返回"\u4000\f"。这种行为有原因吗?

编辑:澄清了预期行为。

编辑:显然,这在3.5中发生了变化,我看的是2.0文档页面。

3个回答

10

文档说明:“如果trimChars为null(Visual Basic中的Nothing)或为空数组,则将删除空格字符。”
因此,这不是一个错误。


3

文档已经讲得很清楚了:

从当前 String 对象中的末尾移除指定数组中所有字符的所有尾随匹配项。

返回值类型:System..::.String 删除当前 String 对象末尾的 trimChars 参数的所有出现后剩余的字符串。 如果 trimChars 为 null(在 Visual Basic 中为 Nothing)或为空数组,则删除空格字符。

因此你的例子没有错误。


数组为空,因此不应删除任何内容。 - Alexey Romanov

0
你期望什么行为?
如果你想要删除末尾的 NULL 字符,你应该使用:
"\u4000\f".TrimEnd(new char[1])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接