用offset替换子串几次

时间:2013-12-09 11:13:17

标签: c# string

例如我有一个字符串:

"abcd abcd abcd"

我需要先将“b”替换为“ed”,将第三个“c”替换为“ad”(不完全按照该顺序)。

我从一开始就知道这些字母的索引。

问题是当我替换第一个'b'时,第三个'c'的索引正在向右移动。因此,解决此任务的唯一方法是存储我想要替换的字母索引,然后根据我做出替换的位置和替换字符串的长度来增加或减少它们的索引。

有没有可以为我做这个的图书馆?

更新 更换顺序由用户指定,因此我不知道哪个字母以及何时更换。 源字符串非常大,计算替换索引需要很长时间。

3 个答案:

答案 0 :(得分:3)

如果您知道要替换的字母的索引,那么您只需按其索引降序对列表进行排序,然后通过字符串向后工作 - 这样,字母索引就不会被更改。

答案 1 :(得分:1)

一种非常简单和静态的方法:

string s = "abcd abcd abcd";
string[] groups = s.Split(new[] {' '});
string firstGroup = groups[0].Replace("b", "ed");
string secondGroup = groups[1].Replace("c", "ad");

答案 2 :(得分:0)

只需使用Replace()的内置string方法。

var s = "abcd abcd abcd";
s = s.Replace("b", "ed");
s = s.Replace("c", "ad");

更容易。