2017-05-11 8 views
0

Beginnend in C#, habe kein Duplikat gesehen. Was ich tun möchte, ist:Ersetzen Sonderzeichen durch Unicode-Zeichen in einer Zeichenfolge C#

Diese Saite: İntersport dieser Zeichenfolge umwandeln: \u0130ntersport

fand ich einen Weg, um alles in Unicode zu konvertieren, aber nicht nur die Sonderzeichen zu konvertieren.

Vielen Dank im Voraus für Ihre Hilfe

edit:

Ich habe Ihre Lösung versucht:

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

Aber ich bekomme: „System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [Syst em.Char, System.Strin g] "

+0

Sie über jedes Zeichen laufen könnte und die Lösung hier bereitgestellt verwenden: http://stackoverflow.com/questions/13291339/convert-string -Unicode-Darstellung, um das Zeichen zu konvertieren und dann eine neue Zeichenfolge zu erstellen. –

+0

Ich sah das, aber es würde alle meinen Charakter konvertieren .. und nicht nur die, die ich konvertieren muss –

+0

Ich habe Ihren Code kopiert + eingefügt, 'matchedWebIDDest.name' zu' "İntersport" 'geändert, hinzugefügt' Console.Write (parsedNameUnicode); 'und ich habe' \ u0130nterport' Ergebnis gesehen –

Antwort

4

Sie können versuchen, Linq:

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

Edit: Keine Linq Lösung:

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

string hat nicht die Select-Methode in meiner C# -Version ... wie soll ich damit umgehen? –

+0

danke für deine Antwort btw :) –

+0

@ François Richard: 'string' selbst hat' Select' nicht, aber Linq bietet eine * extension-Methode * 'Select' für' IEnumerable '(' string' ist 'IEnumerable '). Bitte stellen Sie sicher, dass Sie 'using System.Linq;' in andere 'using's –

Verwandte Themen