我想用其他人替换一些字符我之前已经问过这样的问题,他们建议使用函数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 ??
答案 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;
}