字符串中的特殊字符.替换

本文关键字:替换 特殊字符 字符串 | 更新日期: 2023-09-27 18:06:22

我想替换字符串中的特殊字符。

例如输入文本

u00252Fvideo.l3.fbcdn.net http ' u00253A ' u00252F ' ' u00252Fcfs-l3-ash4 ' u00252F351111 ' u00252F203 ' u00252F260478023976707_55781.mp4 ' u00253Foh ' u00253D064626d4996116bdcde2d52f9b70e1f0 ' u002526oe ' u00253D4E566C00 ' u002526l3s ' u00253D20110823082632 ' u002526l3e ' u00253D20110825083632 ' u002526lh ' u00253D0dbcb2d22cd4dd5eb10bf

,然后我期望这个结果:http://video.l3.fbcdn.net/cfs-l3-ash4/351111...

但是字符串没有按预期替换

string[] BadCharacters = { "''u00253A", "''u00252F", "''u00253F" };
string[] GoodCharacters = { ":", "/", "?" };
int i;
for (i = 0; i <= 2; i++)
{
    textBox2.Text = textBox1.Text.Replace(BadCharacters[i], GoodCharacters[i]);
}

字符串中的特殊字符.替换

您的问题是您的字符串通过返回到TextBox1通过循环的每次迭代被践踏。文本,您需要将其保存在本地,并继续使用更改后的值进行下一个替换:

var changedText = textBox1.Text;
// always modify and assign to temp, that way we modify previous
for (i = 0; i <= 2; i++)
{
  changedText = changedText.Replace(BadCharacters[i], GoodCharacters[i]);
}
textBox2.Text = changedText;

试试这个:

var tmp = textBox1.Text;
for (i = 0; i <= 2; i++)
{
    tmp = tmp.Replace(BadCharacters[i], GoodCharacters[i]);
}
textBox2.Text = tmp;

textBox2。对于每个循环,文本将只包含一个替换,因此您可能只看到最后一次迭代。

for (i = 0; i <= 2; i++)
{
  textBox1.Text = textBox1.Text.Replace(BadCharacters[i], GoodCharacters[i]);
}

可能会提供所需的完整替换字符串。

每次替换子字符串时都需要保存更新后的string值。因此,将textBox1的初始值保存为textBox2,在迭代时使用。这样,您就不会丢失更新后的字符串值。

textBox2.Text = textBox1.Text;
for(i = 0; i <= 2; i++)
{
   textBox2.Text = textBox2.Text.Replace(BadCharacters[i], GoodCharacters[i]);
}

此外,通过将初始textBox1值赋给textBox2并在for循环中使用它,可以节省一条赋值语句。