2008-09-16 2 views
10

J'ai une chaîne qui est comme ci-dessous.Comment est-ce que je peux couper la virgule principale dans ma chaîne

,liger, unicorn, snipe 

dans d'autres langues que je connais, je peux juste faire un string.trim (« »), mais comment puis-je faire cela en C#?

Merci.


Il y a eu beaucoup d'allers-retours sur la fonction StartTrim. Comme plusieurs l'ont souligné, le StartTrim n'affecte pas la variable primaire. Cependant, étant donné la construction des données par rapport à la question, je suis déchiré quant à la réponse à accepter. Certes la question ne veut que le premier caractère rogné pas le dernier (si anny), cependant, il n'y aurait jamais « » à la fin des données. Donc, avec cela dit, je vais accepter la première réponse que cela dit d'utiliser StartTrim assigné à une nouvelle variable.

+0

Suggère d'ajouter le tag ".net", car ce n'est pas spécifique à la langue. –

+0

85 vues 10 réponses et personne ne pense que cette question vaut une +1? – Keng

+0

@Keng peut-être parce que ce genre d'étoffes est une sorte de trivial pour C# gens – chakrit

Répondre

11
string sample = ",liger, unicorn, snipe"; 
sample = sample.TrimStart(','); // to remove just the first comma 

Ou peut-être:

sample = sample.Trim().TrimStart(','); // to remove any whitespace and then the first comma 
+0

Grande réponse, j'ai aussi ajouté dans TrimEnd aussi bien sample.Trim(). TrimStart (','). TrimEnd (','); –

0
if (s.StartsWith(",")) { 
    s = s.Substring(1, s.Length - 1); 
} 
21
string s = ",liger, unicorn, snipe"; 
s.TrimStart(','); 
+0

Cette méthode modifie-t-elle la chaîne? Ne devrait-il pas être réaffecté à s ala s = s.TrimStrat ('/'); ? – chakrit

+0

pas sûr, mais son non-séquenceur à la question. – DevelopingChris

+0

Non, les chaînes sont immuables. Toutes les fonctions de manipulation renvoient une nouvelle chaîne avec les modifications appliquées. –

0
string t = ",liger, unicorn, snipe".TrimStart(new char[] {','}); 
0
string s = ",liger, tiger"; 

    if (s.Substring(0, 1) == ",") 
     s = s.Substring(1); 
+0

juste FYI, vous pouvez le faire s.StartsWith (et pas à faire tout en fait la sous-chaîne juste pour obtenir le premier caractère. – DevelopingChris

+0

Merci Chanchán. Je tombe souvent sur un petit sous-ensemble de .Net que je « attends » être là, basé sur mon expérience avec d'autres langues. –

0

Vouliez-vous dire garniture toutes les instances de "" dans cette chaîne?

Dans ce cas, vous pouvez le faire:

s = s.Replace(",", ""); 
+0

Il veut juste enlever la première virgule. –

1

"Liger, licorne, bécassine des marais" .Trim ('') -> "Liger, UNICOR, bécassine des marais"

+0

la question demande de supprimer le « Leading virgule », mais Trim() « Supprime tous les avant et arrière occurrences d'un ensemble de caractères spécifié de l'objet String actuel. "http://msdn.microsoft.com/fr-fr/library/system.string.trim.aspx – Andrew

1

string essai. Coupez (',') et voyez si cela fait ce que vous voulez.

+0

La question demande de supprimer la 'virgule principale', mais Trim() "Supprime toutes les occurrences principales et finales d'un ensemble de caractères spécifiés de l'objet String en cours. " http://msdn.microsoft.com/en-us/library/system.string.trim.aspx – Andrew

0

Il suffit d'utiliser Substring d'ignorer le premier caractère (ou l'affecter à une autre chaîne);

string o = ",liger, unicorn, snipe"; 
string s = o.Substring(1); 
4

.net Les chaînes peuvent faire Trim() et TrimStart().Parce qu'il faut params, vous pouvez écrire:

",liger, unicorn, snipe".TrimStart(',') 

et si vous avez plus d'un caractère à l'assiette, vous pouvez écrire:

",liger, unicorn, snipe".TrimStart(",; ".ToCharArray()) 
+0

wow .. cette chaîne de caractères est un truc que je n'ai jamais vu auparavant. – chakrit

+0

ou 'new [] {',', ';', ''}' –

1

Remarque, la chaîne d'origine reste intacte, Trim vous renvoie une nouvelle chaîne:

string s1 = ",abc,d"; 
string s2 = s1.TrimStart(",".ToCharArray()); 
Console.WriteLine("s1 = {0}", s1); 
Console.WriteLine("s2 = {0}", s2); 

impressions:

s1 = ,abc,d 
s2 = abc,d 
3

est ici un moyen facile de produire non la virgule leader pour commencer:

string[] animals = { "liger", "unicorn", "snipe" }; 
string joined = string.Join(", ", animals); 
1
string s = ",liger, unicorn, snipe"; 
s = s.TrimStart(','); 

Il est important d'affecter le résultat de TrimStart à une variable. Comme il est dit sur le TrimStart page, "Cette méthode ne modifie pas la valeur de l'instance actuelle, mais renvoie une nouvelle chaîne ...".

Dans .NET, les chaînes ne changent pas.

1

vous pouvez utiliser cette

, Liger, licorne, bécassine des marais » .TrimStart (' ');

2

string.TrimStart (',') supprimera la virgule, mais vous aurez du mal à . une opération de scission en raison de l'espace après la virgule Meilleur pour rejoindre juste à la virgule ou utilisez

de split ("" .ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

Questions connexes