字符串中的特殊字符.替换
本文关键字:替换 特殊字符 字符串 | 更新日期: 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循环中使用它,可以节省一条赋值语句。