("hello").Remove('e');
所以String.Remove
有很多重载,其中一个是:String.Remove(int startIndex)
不知何故,我写的'e'
字符被转换为int
,并调用了WRONG重载函数。这是完全出乎意料的事情。我是否必须忍受这种情况,或者是否有可能提交错误,以便在下一版本的(神圣).NET框架中得到纠正?
答案 0 :(得分:8)
String.Remove精确 2 重载,两者都以int
作为第一个参数。
我相信你正在寻找String.Replace,如
string newString = "hello".Replace("e", string.Empty);
答案 1 :(得分:5)
没有Remove
方法需要char
...
http://msdn.microsoft.com/en-us/library/143t8z3d.aspx
但是,char
可以隐式强制转换为int
,所以在你的情况下它是。{但它实际上不会删除字母e
,而是删除索引(int)'e'
处的字符(在您的情况下,它将在运行时超出范围)。
如果您要“删除”字母e
,则:
var newString = "Hello".Replace("e", "");
我预测未来可能存在字符串的不变性。祝你好运; - )
答案 2 :(得分:4)
请查看方法的intellisense:它是:
//
// Summary:
// Returns a new string in which all the characters in the current instance,
// beginning at a specified position and continuing through the last position,
// have been deleted.
//
// Parameters:
// startIndex:
// The zero-based position to begin deleting characters.
//
// Returns:
// A new string that is equivalent to this string except for the removed characters.
//
// Exceptions:
// System.ArgumentOutOfRangeException:
// startIndex is less than zero.-or- startIndex specifies a position that is
// not within this string.
public string Remove(int startIndex);
它做了它所说的;它只是你想要的方法。你想要的是:
string s = "hello".Replace("e","");
答案 3 :(得分:2)
Remove使用整数作为参数,而不是char。 'e'作为int变成了101。
答案 4 :(得分:2)
你的问题是什么?
由于没有以char
为参数的重载,您不能指望以这种方式删除'e'
。
只需使用string.Replace(string, string)
。
答案 5 :(得分:1)
string.Remove()只有2个重载,其中一个接受一个int参数(并且没有一个接受char参数)。
Chars可以轻易转换为整数。
因此调用string.Remove(int)。
不是错误。 :)