在c#中,String . replace不会替换丹麦字符

本文关键字:替换 丹麦 字符 replace String | 更新日期: 2023-09-27 18:17:21

所以我有一个包含丹麦字符(æ)的字符串,比如:

string textString = "tæst"; string newString = "";

由于某种原因,这个

newString = textString .Replace("æ", "e");

没有正确替换,当它应该是newString = "test"时,它产生newString = "tæst"

然而,并不总是!

我已经在多个服务器上进行了测试,在一些服务器上,这是正确返回的"test"在其他服务器上,这是"tæst"

我在想,也许字符串不被识别为utf8字符串,也许应该被强制识别为utf8。只是一个猜测,你有什么想法/猜测吗?

谢谢

在c#中,String . replace不会替换丹麦字符

大多数Unicode字符都有多个版本,这些版本看起来非常相似。示例:1 每周一/ 1①⑴

var s = "æӕ".Replace("æ", "ae"); // s = "aeæ"
var v = "æӕ".Select(c => (int)c).ToArray(); // { 230, 1237 }

我认为预料到意想不到的情况(特别是当涉及到用户输入时)是一种很好的做法

var s = "æӕ";
var a = s.ToCharArray(); // or use StringBuilder for non 1 to 1 character replacements
for (int i = 0; i < s.Length; i++)
    if (a[i] > 127)
        switch (a[i]) {
            case 'æ': case 'ӕ': 
                a[i] = 'e'; break;
            default: 
                Debug.Print("Unexpected character " + a[i]);
        }
s = new string(a);

以下是程序员相信的一些不相关的谎言

编辑 。是的,我没看清楚问题。(

以上

Rbm是正确的。New不是一个有效的名称。这段代码可以运行。

 static void Main(string[] args)
    {
        string text = "tæst";
        string s = string.Empty;
        s = text.Replace("æ", "e");
        Console.WriteLine(s);
        Console.ReadKey();
    }