C# 使用字符串的奇怪行为。替换
我使用replace关键字替换字符串或字符,我可以成功地替换 这是我的密码C# 使用字符串的奇怪行为。替换,c#,C#,我使用replace关键字替换字符串或字符,我可以成功地替换 这是我的密码 string keywoord = "Emerika"; var result = keywoord.Replace(keywoord[0], 'A'); 结果:Amerika 但当我换下一件东西时,我会有奇怪的行为 string keywoord = "xxxxx"; var result = keywoord.Replace(keywoord[0], 'A'); 我将得到结果:AAAAA 它应该返回Ax
string keywoord = "Emerika";
var result = keywoord.Replace(keywoord[0], 'A');
结果:Amerika
但当我换下一件东西时,我会有奇怪的行为
string keywoord = "xxxxx";
var result = keywoord.Replace(keywoord[0], 'A');
我将得到结果:AAAAA
它应该返回Axxxx
string keywoord = "aaakaaa";
var result = keywoord.Replace(keywoord[0], 'z');
我将得到结果:zzzkzzz
它应该返回zaakaaa
因此,发生了什么,我只需要替换一件事,而不是多件事,任何错误,或者你有其他解决方案吗?如果你想替换前n个幻影,你可以使用正则表达式
var regex = new Regex(Regex.Escape("o"));
var newText = regex.Replace("Hello World", "Foo", 1);
//结果HellFoo世界
- “o”是要替换为的文本
- “Hello World”是要在其中进行更改的文本
- “Foo”是替代品
- 1(第三个参数)是替换次数(要替换的前n个实例)
- 一些
实现(例如在JavaScript中)只替换搜索字符串的第一个匹配项。C#实现不需要,它会替换任何事件,因此,如果将Replace
中的每个“xxxx”
替换为“x”
,则会得到“A”
“AAAA”
- 传递给
的第一个参数是要查找的值,第二个参数是要替换的值Replace
参见以下示例-
- 有几件事需要了解-
"Emerika".Replace('E', 'A'); // "America"
"Emerika".Replace('k', 'A'); // "EmeriAa"
"Emerika".Replace('x', 'A'); // "Emerika", because there is no 'x' to replace
"xxxx".Replace('g', 'a'); // "xxxx", becuase there is no 'g' to replace
"xxxx".Replace('x', 'A'); // "AAAA", becuase every 'x' was replaced with an 'A'
var str = "Emerika";
str.Replace(str[0], 'A'); // "America", but just because the value of str[0] is equal to 'E', so this is just like out first example.
这里有一个到for
字符串的链接。用更多的解释替换为什么希望替换('x','a')代码>将只替换一次出现的内容?关键字[0]=a所以您将所有a替换为关键字[0]意味着我只替换一次first@Progman我认为它发生了一次,因为它不是looping@NurMahin,传递给Replace
的第一个参数是要搜索和替换的字符,不是要替换的字符串中的位置。