0

我正在尝试从这个简单代码中的字符串中删除子字符串。但是 c# 并没有删除它:

stringCmd = "Haha WoWI am in love!"
stringCmd.Remove(stringCmd.IndexOf("WoW"), 5);

删除后应该是“哈哈恋爱了!”

4

5 回答 5

7

字符串在 .NET 中是不可变的

stringCmd = "Haha WoWI am in love!"
stringCmd = stringCmd.Remove(stringCmd.IndexOf("WoW"), 5);
于 2013-09-04T14:29:59.907 回答
6

string.Remove方法返回新字符串而不修改作为参数传递的字符串,因此您必须将其分配回您的变量:

stringCmd = stringCmd.Remove(stringCmd.IndexOf("WoW"), 5);

您还应该知道string.NET 中的 s 是不可变的。您可以在 MSDN 上阅读更多相关信息:string(C# 参考)

于 2013-09-04T14:30:03.077 回答
3

字符串是不可变的,因此它不会影响字符串,而是返回一个新字符串:

string stringCmd = "Haha WoWI am in love!"
string modified = stringCmd.Remove(stringCmd.IndexOf("WoW"), 5);
Console.WriteLine(modified);
于 2013-09-04T14:30:22.090 回答
3

此方法返回删除了指定子字符串的字符串。所以你需要将它应用到另一个字符串:

string myString = stringCmd.Remove(stringCmd.IndexOf("WoW"), 5);

或者您可以将其应用回自身:

stringCmd = stringCmd.Remove(stringCmd.IndexOf("WoW"), 5);
于 2013-09-04T14:30:58.657 回答
1

我会尝试做 stringCmd = stringCmd.Remove(stringCmd.IndexOf("WoW"), 5);

于 2013-09-04T14:30:39.980 回答