C# 为什么不是';t字符串。替换任何东西吗?
这是问题之一。基本上我被卡住了 编写一个方法,从另一个字符串中删除所有出现的字符串: 我在这里所做的显然不起作用,但我不知道在哪里搜索如何做到这一点 字符串在C#/.NET中是不可变的,因此C# 为什么不是';t字符串。替换任何东西吗?,c#,C#,这是问题之一。基本上我被卡住了 编写一个方法,从另一个字符串中删除所有出现的字符串: 我在这里所做的显然不起作用,但我不知道在哪里搜索如何做到这一点 字符串在C#/.NET中是不可变的,因此foo.Replace不会更新foo的值,而是会返回一个新值: String foo = "abc"; String fooWithoutB = foo.Replace( "b", "" ); Assert.AreEqual( "abc", foo ); Assert.Are
foo.Replace
不会更新foo
的值,而是会返回一个新值:
String foo = "abc";
String fooWithoutB = foo.Replace( "b", "" );
Assert.AreEqual( "abc", foo );
Assert.AreEqual( "ac" , fooWithoutB );
其他一些注意事项:
- 避免使用“匈牙利符号”(例如变量名的
前缀)。这是令人沮丧的str
- 使用有意义的名称
没有告诉我它的用途。考虑一个签名,如<代码>移除异类事务(字符串指针,字符串HASSTACK)或<代码>(String of String,String),str
- 原始方法返回的原始第二个参数保持不变。如果您使用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 ;
}