替换和修改字符串

时间:2012-05-24 15:38:55

标签: c# replace

我想用其他人替换一些字符我之前已经问过这样的问题,他们建议使用函数Replace,但是当我使用Replace时,当我尝试用另一个char替换chars时它会删除另一个char这也是一个字符串,我不想删除。我的代码有更多的澄清

for (int i = 0; i < words.Length; i++)
{
    for (int j = 1; j < words[i].Length; j++)
    {
        if (j + 2 == words[i].Length)
            break;

        if (words[i][j] == words[i][j + 2] && words[i][j + 1] == '0')
        {
            words[i] = words[i].Replace(words[i][j + 1].ToString(), string.Empty);
        }
    }
}

如果我的字符串是“a1010”根据我的代码,最后的字符串应该是a110但输出是a11,我想知道它为什么删除最后的0 ??

4 个答案:

答案 0 :(得分:4)

.Replace将使用指定替换的字符替换所有出现的给定字符。这就是为什么两个出现的0都被删除了。

由于您要找到要替换的字母,请尝试使用Remove,然后中断循环,这样您也不会删除第二次出现。

答案 1 :(得分:1)

这一行

words[i] = words[i].Replace(words[i][j + 1].ToString(), string.Empty);

使用emtpty字符串替换单词j+1中位置i处的字符的所有实例。在您的示例中,这意味着所有 0都将被删除。

答案 2 :(得分:1)

 words[i] = words[i].Replace(words[i][j + 1].ToString(), string.Empty);

基本上解决了......

 words[i] = words[i].Replace("0", "");

(至少在您描述的特定迭代中)

用空字符串替换字符串中的所有0。如果您知道要删除的角色的确切索引,则可以执行此操作...

words[i].Remove(j + 1, 1);

答案 3 :(得分:0)

您可以使用以下方法替换第一个匹配项:

public static string Replace(string Word, string oldChar, string newChar)
{
    for (int i = 0; i < Word.Length; i++)
    {
        string aux = "" + Word[i];
        if (aux.Equals(oldChar))
        {
            Word = Word.Remove(i, 1);
            Word = Word.Insert(i, newChar);

            return Word;
        }
    }
    return Word;
}