C#Winforms - 替换子字符串

时间:2017-12-13 19:15:52

标签: c# string

如何用另一个字符串替换子字符串?

string line = "ABC00.00GHIABCDEFGH00.00IJKLM00.00NO";

我想用12.34替换00.00的第二个实例。

3 个答案:

答案 0 :(得分:4)

最简单的解决方案是使用IndexOfSubString的组合:

var line = "ABC00.00GHIABCDEFGH00.00IJKLM00.00NO";
var indexOfSecondOccurance = line.IndexOf("00.00", line.IndexOf("00.00")+1);
var result = line.Substring(0, indexOfSecondOccurance) + "12.34" + line.Substring(indexOfSecondOccurance + 5);

答案 1 :(得分:0)

IdleService

代码的工作原理如下:

  1. 正则表达式搜索“00.00”的每个实例。
  2. 一旦找到正在搜索的字符串,它就会调用MatchEvalutor委托,它将Match对象传递给该函数。
  3. 因为我们只需要第二个实例,所以我们必须跟踪匹配的发生。 lambda函数在这种情况下使用int x = 0; string line2 = Regex.Replace(line, "00\.00", m => ++x == 2 ? "12.34" : m.Value); 变量。
  4. 然后最简单的事情:首先,我们增加x,然后将其与x进行比较。如果x等于2,那么我们返回“12.34”,否则我们返回我们找到的内容。

答案 2 :(得分:0)

您还可以使用SplitJoin

var line = "ABC00.00GHIABCDEFGH00.00IJKLM00.00NO";
var parts = line.Split(new [] { "00.00" }, StringSplitOptions.None);
var line2 = String.Join("00.00", parts.Take(2)) + String.Join("00.00", parts.Skip(2));

在这里,我们拆分00.00,从而从拆分数组中删除每个实例。然后我们将字符串重新组合在一起,但我们跳过了不需要的00.00实例。