2009-10-21 12 views
11

Desidero scartare i caratteri rimanenti (che possono essere caratteri) nella stringa dopo che ho incontrato uno spazio.
Es. Vorrei che la stringa "10 1/2" diventasse "10";
Attualmente sto usando Spalato, ma questo sembra eccessivo:Scarta caratteri dopo spazio in stringa C#

string TrimMe = "10 1/2"; 
string[] cleaned = TrimMe.Split(new char[] {' '}); 
return string[0]; 

mi sembra che ci dovrebbe essere un modo più semplice.

+1

Il tuo modo è semplice e bene per questo. Tecnicamente è inefficiente, ma in un modo "chi-the-hell-cares". – MusiGenesis

risposta

10

Alcune altre opzioni:

string result = Regex.Match(TrimMe, "^[^ ]+").Value; 
// or 
string result = new string(TrimMe.TakeWhile(c => c != ' ').ToArray()); 

Tuttavia, IMO quello di partenza è molto più semplice e più facile da leggere.

MODIFICA: entrambe le soluzioni gestiscono stringhe vuote, restituiscono l'originale se non sono stati trovati spazi e restituiscono una stringa vuota se inizia con uno spazio.

+0

La tua risposta linq è intelligente, ma penso che tu abbia ragione, rimarrò con la mia soluzione split. Grazie. –

+0

Sono d'accordo ... la risposta LINQ è abbastanza intelligente. Non vorrei vederlo nel codice di produzione. :) – Randolpho

11

questo dovrebbe funzionare:

Int32 indexOfSpace = TrimMe.IndexOf(' '); 
if (indexOfSpace == 0) 
    return String.Empty; // space was first character 
else if (indexOfSpace > 0) 
    return TrimMe.Substring(0, indexOfSpace); 
else 
    return TrimMe; // no space found 
+1

+1 - punti extra per i "casi angolari" –

+1

Non del tutto sicuro che fosse necessario, tuttavia, assomiglia alla lunghezza delle maniglie di sottostringa = 0. Lo lascerò comunque. –

1

Spalato è probabilmente la più elegante/soluzione più semplice. Altre opzioni includono espressioni regolari e/o analisi/analisi lessicale. Entrambi saranno più complessi rispetto all'esempio che hai fornito.

5

Simile a un'altra risposta, ma terser:

int indexSpace = trimMe.IndexOf(" "); 
return trimMe.Substring(0, indexSpace >= 0 ? indexSpace : trimMe.Length); 
7

Mi piace questo per migliorare la leggibilità:

trimMe.Split(' ').First(); 
+0

Anch'io. Molto bella. –

+0

Split ('') non ha la funzionalità First(). –

+0

@Wanna Usa 'usando System.Linq;' –

Problemi correlati