在C#中使用string.Remove('n')会在某一点截断字符串

c#

我有一个带有换行符的 IP 地址字符串。我需要从文字中删除所有换行符。所以我使用了 string.Remove()

现在一旦调试器越过这条线,表达式的结果在“192.168.20”处截断

为什么会发生这种情况。我不想使用替换,我想摆脱 'n'

回答

如果您查看文档,您会发现实际上并没有string.Remove需要删除字符的重载。

我希望char被隐式转换为 anint并且您正在点击string.Remove(startIndex)

返回一个新字符串,其中当前实例中从指定位置开始并一直到最后一个位置的所有字符都已被删除。

n将转换为字符的十进制值 10,因此string.Remove作为位置 10传递,因此之后的所有内容都将被删除,这就是我们看到的情况:192.168.20 是 10 个字符长。

如果您只想删除包括 first 之后的所有内容n,我会建议如下:

int idx = input.IndexOf("n", StringComparison.InvariantCulture);
if (idx != -1)
{
    input = input.Remove(idx);
}

或者简单地更换所有的实例n,使用replace(我知道你说你不想这样做,但以防万一):

input = input.Replace("n", string.Empty, StringComparison.InvariantCulture);


以上是在C#中使用string.Remove('n')会在某一点截断字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>