Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用字符串的奇怪行为。替换_C# - Fatal编程技术网

C# 使用字符串的奇怪行为。替换

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

我使用replace关键字替换字符串或字符,我可以成功地替换 这是我的密码

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个实例)

    • 有几件事需要了解-

    • 一些
      Replace
      实现(例如在JavaScript中)只替换搜索字符串的第一个匹配项。C#实现不需要,它会替换任何事件,因此,如果将
      “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
      的第一个参数是要搜索和替换的字符,不是要替换的字符串中的位置。