2009-11-17 6 views
0

Je dois supprimer les caractères inconnus à la fin d'une chaîne renvoyée par une base de données SQL. J'ai également besoin d'enregistrer quand un caractère spécial se produit dans la chaîne.Comment supprimer les caractères spéciaux de la fin d'une chaîne?

Quelle est la meilleure façon de le faire?

+2

Quels sont les caractères spéciaux qui doivent être supprimés? Pourquoi avez-vous besoin de vous connecter quand on est dépouillé? Qu'avez-vous essayé et quelles sont vos premières pensées? –

+0

C'est le problème, je ne suis pas sûr de ce qui doit être dépouillé. Le programme qui remplit la base de données injecte des caractères inconnus. Malheureusement, je n'ai pas le contrôle de ce processus. Ceux qui le contrôlent veulent savoir quand cela se produit. Mes premières pensées seraient d'utiliser une méthode statique de la classe Char. Je sais que les chaînes stockées dans la base de données sont uniquement alphanumériques, elles ajoutent ces caractères inconnus à la fin de la chaîne. En effectuant un 'UrlEncodeUnicode' sur le personnage, je reçois ce '% 00 ++++++', je ne sais pas comment interpréter cela. – anon

+0

Juste une intuition ... est la colonne DB VARCHAR ou CHAR? –

Répondre

-1

vérifiez les Regex. Remplacer les méthodes ... il y a beaucoup de surcharges. Vous pouvez utiliser les méthodes Match pour la journalisation pour identifier toutes les correspondances.

 String badString = "HELLO WORLD!!!!"; 

     Regex regex = new Regex("!{1,}$"); 

     String newString = regex.Replace(badString, String.Empty); 
2

Vous pouvez utiliser la méthode Trim() pour découper des espaces ou des caractères spécifiques à partir de la fin d'une chaîne. Si vous devez découper un certain nombre de caractères, vous pouvez utiliser la méthode Substring(). Vous pouvez utiliser Regexs (espace de noms System.Text.RegularExpressions) pour faire correspondre les modèles dans une chaîne et détecter quand ils se produisent. Voir MSDN pour plus d'informations.

Si vous avez besoin de plus d'aide, vous devrez fournir un peu plus d'informations sur ce que vous essayez de faire exactement.

0

Définissez d'abord les caractères inconnus (caractères autres que 0-9, a à z et A à Z?) Et placez-les dans un tableau Faites une boucle sur les caractères d'une chaîne et vérifiez si le caractère apparaît, si c'est le cas retirer. vous pouvez également à un String.Replace avec comme paramètre le char inconnu, et replaceparam ''.

0

Votre définition du problème est pas précis mais c'est un truc rapide de le faire:

 
string input; 
... 
var trimed = input.TrimEnd(new[] {'#','$',...} /* array of unwanted characters */); 
if(trimed != input) 
    myLogger.Log(input.Replace(trimed, "")); 
0

Depuis que vous avez spécifié que les caractères légaux sont que des caractères alphanumériques, vous pouvez faire quelque chose comme ceci:

Match m = Regex.Match(original, "^([0-9A-Za-z]*)(.*)$"); 
string good = m.Groups[1].Value; 
string bad = m.Groups[2].Value; 

if (bad.Length > 0) 
{ 
    // log bad characters 
} 

Console.WriteLine(good); 
Questions connexes