2016-11-11 40 views
-5

,所以我有一个包含丹麦字符(AE)字符串,说:在C#中,字符串.Replace不会取代丹麦字符

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

由于某种原因,这个

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

是不是更换正确的,这应该是newString = "test"时产生的newString = "tæst"

但是,并非总是

我已经在多台服务器上测试过,在某些情况下,这个返回的结果是"test",这是"tæst"

我在想,也许字符串不被识别为utf8字符串,也可能被迫被识别为utf8。只是猜测,你有想法/猜测吗?

感谢

+5

你能提供可重复的代码吗? 'string new =“”;'不是有效的C#代码。 – rbm

+0

对不起,只是修好了。 –

+0

你是说_same_'.exe'在不同的服务器上产生不同的结果吗? – rbm

回答

4

大多数Unicode字符有多个版本,可以看起来很相似,例如:。11①⑴

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); 

这里有一些不相关的Falsehoods Programmers Believe

-1

编辑。是的,没有正确地阅读这个问题。 :(

RBM是上述新的正确是不是一个有效的名称此代码的工作

static void Main(string[] args) 
    { 
     string text = "tæst"; 
     string s = string.Empty; 

     s = text.Replace("æ", "e"); 
     Console.WriteLine(s); 
     Console.ReadKey(); 
    } 
+0

谢谢,和以前一样的问题。在某些服务器上 - s =“tæst” - 在其他服务器上 - s =“test”。 –

相关问题