2010-12-15 152 views
7

Lors de l'importation de données à partir d'un fichier à plat, j'ai remarqué que certaines lignes comportaient des espaces insécables (Hex: A0). Je voudrais les supprimer, mais le standard string.replace ne semble pas fonctionner et a envisagé d'utiliser regex pour remplacer la chaîne, mais ne saurait pas ce que l'expression régulière rechercherait pour la supprimer.Suppression d'un caractère spécifique d'une chaîne en fonction de la valeur hexadécimale

Plutôt que de convertir toute la chaîne en hexagone et de l'examiner, y a-t-il un meilleur moyen?

+2

Remplacer devrait gérer cela, pouvez-vous montrer le code (qui a échoué)? –

Répondre

19

Pourquoi ne pas ficeler.Remplacer le travail?

stringVar.Replace((char)0xA0, ' '); 
+0

Les changements ci-dessus à vide, non? Comment le supprimez-vous complètement? J'ai essayé "" et "", mais apparemment, si vous avez un char sur la gauche du remplacement, vous devez avoir un caractère sur le côté droit. – NealWalters

+0

@NealWaters: Vous devez utiliser la version chaîne de 'Replace' avec' null' comme second paramètre. –

12
Regex.Replace(input, "\xA0", String.Empty); 

Cela devrait le faire.

3

Cela fonctionnerait-il pour vous?

var myNewString = myCurrentString.Replace("\n", string.Empty); 
myNewString = myNewString.Replace("\r", string.Empty); 

"\n" est LineFeed ASCII, "\r" est de retour.

+1

Ni l'un ni l'autre de ces caractères sont le caractère d'espace insécable A0 (160). – KeithS

+0

Oui, vous avez raison, j'ai mal compris la question. Pardon. Dois-je supprimer ma réponse ou simplement le laisser ici (je suis nouveau à ce sujet ...)? –

+0

Vous devriez corriger votre réponse. C'est la meilleure chose à faire. – jlafay

5

chaîne.Remplacer fonctionne. Sans utiliser RegEx:

stringVar = stringVar.Replace("\xA0", string.Empty);