2009-08-25 7 views
2

Je souhaite remplacer certains caractères d'une chaîne d'entrée par d'autres caractères.Vous souhaitez créer une chaîne avec des valeurs de code hexadécimal données

Le texte d'entrée est Microsoft à gauche et guillemets droite que je voudrais convertir en un seul ».

Je comptais sur l'utilisation de l'opération de remplacement, mais je ne parviens à former la chaîne de texte à rechercher Je voudrais remplacer la séquence d'entrée (en hexadécimal) \ xE2809C, et changer cette séquence en une seule ". Idem avec \ xE2809D.

Comment former la chaîne à utiliser dans l'opération de remplacement?

Je pense à quelque chose comme (dans une boucle):

tempTxt = tempTxt.Replace(charsToRemove[i], charsToSubstitute[i]); 

mais je vais avoir du mal à créer le tableau charsToRemove. Peut-être une plus grande question est de savoir si le fichier d'entrée entier peut être lu et converti en ASCII pur en utilisant certaines conversions en lecture/écriture et en chaîne en C#.

Merci, Mike

Répondre

1

Quelque chose comme ça?

char [] charsToRemove = { 
    '\u201C', // These are the Unicode code points (not the UTF representation) 
    '\u201D' 
}; 

char [] charsToSubstitute = { 
    '"', 
    '"' 
}; 
+0

Les valeurs hexadécimales réelles dans mon entrée sont E2809C.Ces valeurs peuvent ne pas correspondre à des citations intelligentes, mais elles correspondent à une sorte de guillemet double affiché par Word J'ai pu supprimer les citations 201C et 201D, mais le E2809C et E2809D. Suggestions? Merci encore, Mike – Mike

+0

Pourriez-vous montrer une partie du code où vous lisez le fichier? –

+0

Est-il possible de vous envoyer un e-mail avec du code? – Mike

0

Vous pouvez donner une chance à Regex. Voici un exemple qui remplacera le texte intelligent cité avec le single ».

string tempTxt = "I am going to “test” this. “Hope” it works"; 
string formattedText = Regex.Replace(tempTxt, "s/“|”|“|”/", @""""); 
0

J'utilise un ReqPro40.dll pour lire des données. Les données sont stockées sous forme de texte. Espère ne pas perdre trop sur copier/coller ci-dessous. les trucs ci-dessous fonctionne au mieux de ma connaissance. mais je veux se débarrasser des séquences plus longues de mauvais caractères. E2809C devrait devenir une citation, mais je vais avoir du mal à apparier.

string tempTxt = Req.get_Tag(ReqPro40.enumTagFormat.eTagFormat_ReqNameOrReqText); 
tempTxt=tempTxt.Substring(1, tempTxt.Length-1); 

char[] charsToRemoveForXMLLegality = new char[] 
{ '\x000a', '\x000b', '\x0002', '\x001e', // NL, VT, STX, RS 
    '\x0034', '\x8220', '\x8221',   // ", left double, right double quote 
    '\x8216', '\x8217',      // left single quote, right single quote 
    'x8211', '\x8212',      // en-dash, em-dash 
    '\x0188', '\x0177',      // 1/4 fraction, plus/minus 
    '\x8230', '\x0160'      // ellipsis, non-breaking space 
}; 
string[] charsToSubstituteForXMLLegality = new string[] 
     { " ", " ", "", "-", 
      "\"", "\"", "\"", 
      "\'", "\'", 
      "-", "-", 
      "1/4", "+/-", 
      "...", " " 
     }; 

for (int i = 0; i < charsToRemoveForXMLLegality.Length; i++) 
{ 
    tempTxt = tempTxt.Replace(charsToRemoveForXMLLegality[i].ToString(), charsToSubstituteForXMLLegality[i]); 
} 
+0

Une partie du texte:.. Progressa € | â € devrait être Progress ... " valeurs Hex sont: 50 72 6F 67 72 65 73 73 E2 80 A6 E2 80 9D 2E 3C 2F 72 65 71 75 69 72 65 – Mike

+0

Peu importe, si je pouvais faire la différence entre hex et décimal, cela aurait fonctionné !! Désolé pour le problème. – Mike

Questions connexes