C#String.Replace和UTF-8字符

时间:2011-06-21 13:08:22

标签: c# string unicode utf-8

我正在尝试用我自己的字符替换此字符串中的一些Romanian characters,但它并没有真正起作用。

static void Main(string[] args)
{
    string sometext = "Încă nu s-a pornit acasă";
    sometext.Replace("ă", "1");

    Console.WriteLine(sometext);
    Console.ReadKey(true);
}

这会输出原始sometext而不做任何更改。但是,既不替换也不替换最终结果都是Inca nu s-a pornit acasa。变音符号被替换为与它们对应的ISO-8859-1个字符。 Î变为Iă变为a

Sumarry:

预期结果为:Înc1 nu s-a pornit acas1

实际上,我得到:Inca nu s-a pornit acasa

注意:在Advanced Save Options中,我选择了以下编码:Unicode (UTF-8 with signature) - Codepage 65001

实际上,字符串是不可变的,String.Replace返回一个字符串,所以sometext = sometext.Replace("ă", "1");工作正常。谢谢大家!

4 个答案:

答案 0 :(得分:7)

Replace不会改变字符串,它返回一个包含替换的字符串,因此您的代码应为:

sometext = sometext.Replace(...);

答案 1 :(得分:4)

static void Main(string[] args)
{
    string sometext = "Încă nu s-a pornit acasă";
    sometext = sometext.Replace("ă", "1");

    Console.WriteLine(sometext);
    Console.ReadKey(true);
}

static void Main(string[] args)
{
    string sometext = "Încă nu s-a pornit acasă".Replace("ă", "1");

    Console.WriteLine(sometext);
    Console.ReadKey(true);
}

或者其他什么,Replace返回字符串

答案 2 :(得分:3)

字符串是不可变的。 sometext = sometext.Replace(...)也是如此。

答案 3 :(得分:3)

static void Main(string[] args)
{
    string sometext = "Încă nu s-a pornit acasă";
    sometext = sometext.Replace("ă", "1");

    Console.WriteLine(sometext);
    Console.ReadKey(true);
}

试试这个......