2010-09-14 6 views
1

Comment puis-je supprimer juste la première virgule + espace d'en bas s'il n'y a rien d'autre.Une manipulation de chaînes Question pour .NET

string comments = ", 38, "; 
+0

Est-ce que le ',' apparaissent toujours à la tête de la chaîne? Voulez-vous voir les chaînes ** sans ** a ','? Que voulez-vous faire si vous voyez quelque chose comme «38, 39»? –

+0

Apparemment, vous ne comprenez pas ma question. "virgule + espace d'en bas si c'est là" => si c'est là "else" => ne fait rien. – Sreedhar

+0

semble que vous ne comprenez pas ** mes ** questions, sinon vous auriez répondu. –

Répondre

5
if(comments.StartsWith(", ") && comments.Length > 2) { 
    comments = comments.Substring(2); 
} 
+1

Cela échouera si la chaîne est seulement ",", puisque la position 3 n'existe pas. –

+0

Et donnera également le mauvais résultat si la chaîne commence avec juste une virgule ou un espace. ", 38," deviendra "8". –

+0

@Paw Je ne pense pas, puisque ", 38," ne commence pas par "," –

3

La meilleure façon serait d'utiliser la méthode String.TrimStart(...).

string comments = ", 38, "; 
string commentsOK = "38, "; 

string trimmedComments = comments.TrimStart(',', ' '); 
string trimmedCommentsOK = commentsOK.TrimStart(',', ' '); 

Après cette fois trimmedComments et trimmedCommentsOK aurait la valeur "38, ".

référence Méthode String.TrimStart: http://msdn.microsoft.com/en-us/library/system.string.trimstart.aspx

+0

J'ai appris quelque chose de nouveau aujourd'hui. – recursive

+0

Ne supprimerait-il pas aussi "," de ", 38,"? La méthode TrimStart est conçue pour supprimer tous les caractères principaux spécifiés dans les arguments, quel que soit leur ordre. En fonction de la question, je pense que vous utilisez incorrectement TrimStart. –

+0

Eh bien normalement, vous voudriez supprimer les virgules et les espaces d'avant les données et pas spécifiquement la chaîne ",". Le problème avec la question est que la sortie désirée n'est pas spécifiée. –