2013-04-05 9 views
8

In una stringa da formattare (principalmente per sostituire caratteri con simboli diversi per il rendering test sull'interfaccia utente), devo rilevare% e quindi saltare tutti i caratteri utilizza il primo spazio da questo% char e deve essere ripetuto per tutte le istanze nella stringa.Ottieni l'indice del primo spazio rilevato dopo un determinato indice in una stringa

E.g.abcd%1$s efgh %2$d ijkl. In questa stringa, devo ottenere l'indice di% e quindi trovare l'indice del primo spazio da quello. Fondamentalmente, devo saltare questo %1$s & %2$d che sono una sorta di segnaposti di formattazione. Spero, non lo sto mettendo in modo complesso qui.

risposta

16

È possibile ottenere che abbastanza facilmente, basta afferrare l'indice se il primo segno di percentuale e poi sfruttare tale indice per trovare il primo spazio da lì:

var start = myString.IndexOf("%"); 
var spaceIndex = myString.IndexOf(" ", start) 

, naturalmente, il valore della myString è la stringa rappresentato nella tua domanda.

+0

Grazie, questo è esattamente quello che volevo fare. Trovato più informazioni [qui] (http://msdn.microsoft.com/en-us/library/7cct0x33.aspx). – Indigo

+0

@Chetan, sono felice di poter essere di aiuto! –

-1

seguito è più facile, ed estensibile, per il vostro requisito "abcd%1$s efgh %2$d ijkl in questa stringa devo saltare questo %1$s & %2$d che sono una sorta di segnaposto di formattazione."

string[] placeHolders = new string[] {"%1$s", "%2$d"}; 
string[] splits = "abcd%1$s efgh %2$d ijkl".Split(placeHolders, StringSplitOptions.None); 

che fornirà splits come ["abcd", "efgh", "ijkl"]

+0

Per garantire che il tuo post sia leggibile, è utile formattare 'codice inline' circondandoli con' \ '' backticks' \ '' –

+0

@JonSurrell: è meglio ora? – prassie

+0

sì, è migliorato –

Problemi correlati