2017-05-11 301 views
0

從c#開始,沒有看到重複。我想要做的是:用字符串c中的unicode字符替換特殊字符#

這個字符串:İntersport 轉換爲字符串:\u0130ntersport

我發現了一種所有內容轉換爲Unicode而不是隻對特殊字符轉換。

在此先感謝您的幫助

編輯:

我已經試過您的解決方案:

string source = matchedWebIDDest.name; 
string parsedNameUnicode = string.Concat(source.Select(c => c < 32 || c > 255 ? "\\u" + ((int)c).ToString("x4") : c.ToString())); 

但我得到:「System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [SYST em.Char,System.Strin g]「

+0

你可以遍歷每個字符,並使用這裏提供的解決方案:http://stackoverflow.com/questions/13291339/convert-string -to-unicode-representation來轉換字符,然後構建一個新的字符串。 –

+0

我看到了這個,但它會轉換所有我的字符..不僅僅是那些我需要轉換 –

+0

我複製+粘貼你的代碼,改變'matchedWebIDDest.name'到'「İntersport」',添加'Console.Write( parsedNameUnicode);''我看過'\ u0130ntersport'結果 –

回答

4

您可以嘗試使用Linq

using System.Linq; 

    ... 

    string source = "İntersport"; 

    // you may want to change 255 into 127 if you want standard ASCII table 
    string target = string.Concat(source 
    .Select(c => c < 32 || c > 255 
     ? "\\u" + ((int)c).ToString("x4") // special symbol: command one or above Ascii 
     : c.ToString()));     // within ascii table [32..255] 

    // \u0130ntersport 
    Console.Write(target); 

編輯:沒有的Linq解決方案:

string source = "İntersport"; 

    StringBuilder sb = new StringBuilder(); 

    foreach (char c in source) 
    if (c < 32 || c > 255) 
     sb.Append("\\u" + ((int)c).ToString("x4")); 
    else 
     sb.Append(c); 

    string target = sb.ToString(); 
+0

字符串在我的c#版本中沒有選擇方法...我應該如何處理? –

+0

感謝您的答案btw :) –

+0

@François理查德:'字符串本身沒有'選擇',但Linq提供*擴展方法*'選擇'IEnumerable '('字符串''IEnumerable ' )。請確保你在其他'使用'' –

相關問題