Ho una stringa simile a SMITH 09-15 # 4-01H6 FINAL 07-02-2011.dwg e ho bisogno di ottenere tutto fino alla parola FINALE compreso lo spazio prima la F. Quindi l'output sarebbe SMITH 09-15 # 4-01H6 Come posso ottenere questo? string.substring? regex? molte grazieTrova sottostringa in una stringa utilizzando C#
risposta
IndexOf ("FINALE") otterrà l'indice di FINALE. Quindi ottenere la sottostringa da 0 a quell'indice.
Aggiornamento: non dimenticare l'opzione StringComparison corretta.
Sto cercando un nome contenente "FINAL" per dimostrare che fallirà ... non ancora fortunato, ma LastIndexOf dovrebbe essere utilizzato da IndexOf. – daniloquio
Farai un grido finale: http://torrentz.eu/users/finalio jeje non ha trovato un nome contenente finale. – daniloquio
È una ricerca case sensitive, quindi solo se scrive il suo nome in maiuscolo. Ma punto assunto. LastIndexOf() –
Un'espressione regolare è probabilmente più di uccidere, una semplice String.Substring
come:
string original = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg";
int pos = original.IndexOf("FINAL");
string new = original.Substring(0, pos);
Prova questo:
string data = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg";
string result = data.Substring(0, data.IndexOf("FINAL"));
Questo dovrebbe farlo per voi:
string str = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg"
string substring = str.Substring(0, str.IndexOf("FINAL"))
Nel codice in alto, la sottostringa inizia con l'indice 0 e quindi raggiunge una lunghezza della posizione di "FINALE" (start char)
Utilizzando String.Substring()
metodo
String a = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg"
String b = a.Substring(0, a.IndexOf("FINAL"));
io non suggerirei di usare espressioni regolari anche in questo caso è più pesante di questo codice.
Nell'esempio seguente, cuttedOne sarà uguale a "SMITH 09-15 # 4-01H6".
string yourString = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg";
string cuttedOne = yourString.Substring(0, yourString.LastIndexOf("FINAL"));
È necessario utilizzare LastIndexOf anziché IndexOf; altrimenti se l'input è "CARFINALTH 09-15 # 4-01H6 FINAL 07-02-2011.dwg" otterrai come risultato "CAR".
Solo per questa stringa è possibile trovare l'indice F
e utilizzare String.Substring(0,indexofF)
.
codice come questo
private static int ReturnIndexOfAGivenCharacterInAString(string str, string s)
{
int index = str.IndexOf(s);
return index;
}
private static string ReturnSubStringOfAGivenStringByLength(string str, string s)
{
int indexOfS = ReturnIndexOfAGivenCharacterInAString(str,s);
string subString = str.Substring(0,indexOfS);
return subString;
}
private static string ReturnSubStringOfMyString()
{
string myString = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg";
//As I pointed earlier you can use F for this string because there is no other F in it
//no need for checking FINAL
string subStringOfMyString = ReturnSubStringOfAGivenStringByLength(myString,"F");
}
Ora è possibile chiamare ReturnSubStringOfMyString()
per ottenere ciò che si vuole, e si può anche chiamare ReturnSubStringOfAGivenStringByLength(string,string)
-questo può essere utilizzato per qualsiasi String come ReturnSubStringOfAGivenStringByLength("SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg","F")
.
È necessario fornire più di un esempio per consentirci di vedere il modello. – Jason
Una funzione di sottostringa ti aiuterà solo se la lunghezza della stringa desiderata è una costante (o, lavorando dalla fine della stringa, se la lunghezza che desideri troncare è costante, che sembra più probabile nel tuo caso). –
WOW, 7 risposte in circa 2 minuti! – VoodooChild