Ottieni sottostringa – tutto prima di alcuni caratteri

Sto cercando di capire il modo migliore per ottenere tutto prima del carattere in una stringa. Alcune stringhe di esempio sono sotto. La lunghezza della stringa prima – varia e può essere di qualsiasi lunghezza

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

quindi ho bisogno del valore che è dall’indice di inizio di 0 a destra prima -. Quindi le sottostringhe risulterebbero essere 223232, 443 e 34443553

.Net Fiddle esempio

 class Program { static void Main(string[] 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 string GetUntilOrEmpty(this string text, string stopAt = "-") { if (!String.IsNullOrWhiteSpace(text)) { int charLocation = text.IndexOf(stopAt, StringComparison.Ordinal); if (charLocation > 0) { return text.Substring(0, charLocation); } } return String.Empty; } } 

Usa la funzione split .

 static void Main(string[] args) { string 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(); } 

Se la tua stringa non ha un - allora otterrai l’intera stringa.

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

Un modo per farlo è utilizzare String.Substring insieme a String.IndexOf :

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

A partire dalla posizione 0, restituisce tutto il testo fino a, ma non incluso, il trattino.

Le cose sono andate avanti da quando è iniziata questa discussione.

Ora, puoi usare

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

Basandosi sulla risposta di 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.Substring(0, index); } else { return str; }