Get Subssortingng – tout avant certains caractères

J’essaie de trouver la meilleure façon de tout mettre avant le – caractère dans une chaîne. Quelques exemples de chaînes sont ci-dessous. La longueur de la chaîne avant – varie et peut avoir n’importe quelle longueur

223232-1.jpg 443-2.jpg 34443553-5.jpg 

J’ai donc besoin de la valeur de l’index de début de 0 à droite avant -. Donc, les sous-chaînes seraient 223232, 443 et 34443553

Exemple de violon .Net

 class Program { static void Main(ssortingng[] args) { Console.WriteLine("223232-1.jpg".GetUntilOrEmpty()); Console.WriteLine("443-2.jpg".GetUntilOrEmpty()); Console.WriteLine("34443553-5.jpg".GetUntilOrEmpty()); Console.ReadKey(); } } static class Helper { public static ssortingng GetUntilOrEmpty(this ssortingng text, ssortingng stopAt = "-") { if (!Ssortingng.IsNullOrWhiteSpace(text)) { int charLocation = text.IndexOf(stopAt, SsortingngComparison.Ordinal); if (charLocation > 0) { return text.Subssortingng(0, charLocation); } } return Ssortingng.Empty; } } 

Utilisez la fonction split .

 static void Main(ssortingng[] args) { ssortingng s = "223232-1.jpg"; Console.WriteLine(s.Split('-')[0]); s = "443-2.jpg"; Console.WriteLine(s.Split('-')[0]); s = "34443553-5.jpg"; Console.WriteLine(s.Split('-')[0]); Console.ReadKey(); } 

Si votre chaîne n’a pas de - alors vous aurez la chaîne complète.

 Ssortingng str = "223232-1.jpg" int index = str.IndexOf('-'); if(index > 0) { return str.Subssortingng(0, index) } 

Une façon de faire est d’utiliser Ssortingng.Subssortingng avec Ssortingng.IndexOf :

 int index = str.IndexOf('-'); ssortingng sub; if (index >= 0) { sub = str.Subssortingng(0, index); } else { sub = ... // handle ssortingngs without the dash } 

En commençant à la position 0, renvoyez tout le texte jusqu’au tiret, mais sans l’inclure.

Les choses ont évolué un peu depuis le début de ce sujet.

Maintenant, vous pouvez utiliser

 ssortingng.Concat(s.TakeWhile((c) => c != '-')); 

S’appuyant sur la réponse de BrainCore:

  int index = 0; str = "223232-1.jpg"; //Assuming we trust str isn't null if (str.Contains('-') == "true") { int index = str.IndexOf('-'); } if(index > 0) { return str.Subssortingng(0, index); } else { return str; }