C# 为什么不是';t字符串。替换任何东西吗?

C# 为什么不是';t字符串。替换任何东西吗?,c#,C#,这是问题之一。基本上我被卡住了 编写一个方法,从另一个字符串中删除所有出现的字符串: 我在这里所做的显然不起作用,但我不知道在哪里搜索如何做到这一点 字符串在C#/.NET中是不可变的,因此foo.Replace不会更新foo的值,而是会返回一个新值: String foo = "abc"; String fooWithoutB = foo.Replace( "b", "" ); Assert.AreEqual( "abc", foo ); Assert.Are

这是问题之一。基本上我被卡住了

编写一个方法,从另一个字符串中删除所有出现的字符串:

我在这里所做的显然不起作用,但我不知道在哪里搜索如何做到这一点

字符串在C#/.NET中是不可变的,因此
foo.Replace
不会更新
foo
的值,而是会返回一个新值:

String foo         = "abc";
String fooWithoutB = foo.Replace( "b", "" );

Assert.AreEqual( "abc", foo         );
Assert.AreEqual( "ac" , fooWithoutB );
其他一些注意事项:

  • 避免使用“匈牙利符号”(例如变量名的
    str
    前缀)。这是令人沮丧的
  • 使用有意义的名称
    str
    没有告诉我它的用途。考虑一个签名,如<代码>移除异类事务(字符串指针,字符串HASSTACK)或<代码>(String of String,String),
  • 原始方法返回的原始第二个参数保持不变。如果您使用IDE的单步调试程序,就可以识别出这个bug
首先,当遇到类似的情况时,您应该查看的主要位置是上的文档。(用于
字符串的链接。替换

你的第一个错误是显而易见的。在调用
Replace
时,您使用的是字符串常量而不是方法参数。如果只想删除字符串,请替换为空字符串:

strToRemove.Replace(strToRemove, "");
请注意,参数名称周围没有引号,您并没有尝试替换字符串文字“strToRemove”,而是替换变量
strToRemove
的值。第二个错误是在阅读说明如下内容的文档时发现的:

返回一个新字符串,其中指定字符串的所有匹配项 当前实例将替换为另一个指定的字符串

Replace
不会修改原始字符串,因此需要分配结果并返回该结果


如您所见,函数Exercise12前面有“string”,这意味着它返回一个字符串作为结果

它在括号之间还有两个不同的字符串(两个参数),所以这个函数应该读取两个字符串,对它们进行操作,然后返回一个字符串作为结果

public static string Exercise12(string stringtoRemove, string originalString)
{
    string resultString = "";
    resultString = originalString.Replace(stringtoRemove, "");
    return resultString ;

}
如您所见,我们创建了一个名为resultString的新字符串,其值等于originalString值,并在每次存在时将stringtoRemove替换为“nothing”


请注意,stringtoRemove不应该有引号,这样您就可以得到它的实际值。

不会修改字符串,它会返回一个全新的字符串,并进行替换。要“删除”匹配的字符串,可以将其替换为
string.Empty
,这相当于
。您的代码应该是,
return str.Replace(strToRemove,string.Empty)。编辑:实际上,阅读我链接的MSDN页面时,您可以使用
null
string.Empty
作为替换,因为“如果newValue为null,则所有出现的oldValue都将被删除”。此外,您的家庭作业是否意味着只需使用
Replace
方法,或者你真的需要实现底层算法吗?不过我想指出的是,不要只是说“它显然不起作用”,乍一看可能不是那么明显(即使在这种情况下是这样)。描述实际发生的情况并返回谢谢!问题是我不知道在哪里可以找到这些事情是怎么做的。我知道这里做了什么,但我自己想不出来。无论如何谢谢你!您可以从“字符串替换不起作用”开始,作为您最喜欢的搜索引擎中的搜索词…避免使用TitleCase作为参数和局部变量。只有非字段成员、名称空间和类型名称才应该在.NET中使用TitleCase。虽然这个答案是正确的,但复杂的语法很难阅读。感谢您的建议!变量仍然应该是camelCase:),而不是PascalCase
string fixedString = strToRemove.Replace("str", "x");
return fixedString;
public static string Exercise12(string stringtoRemove, string originalString)
{
    string resultString = "";
    resultString = originalString.Replace(stringtoRemove, "");
    return resultString ;

}