C # String.Replace и UTF-8 символов - PullRequest
2 голосов
/ 21 июня 2011

Я пытаюсь заменить некоторые из румынских символов в этой строке своими собственными символами, но на самом деле это не работает.

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 ]

7 голосов
/ 21 июня 2011

Replace не изменяет строку, она возвращает строку с заменами, поэтому ваш код должен быть:

sometext = sometext.Replace(...);
4 голосов
/ 21 июня 2011
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);
}

или что-то еще, Заменить возвращает строку

3 голосов
/ 21 июня 2011
static void Main(string[] args)
{
    string sometext = "Încă nu s-a pornit acasă";
    sometext = sometext.Replace("ă", "1");

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

попробуйте это ...

3 голосов
/ 21 июня 2011

Строки неизменны. Так же sometext = sometext.Replace(...).

...