2010-04-07 12 views
5

Come possiamo dividere la stringa dalla stringaCome possiamo estrarre sottostringa della stringa in base alla posizione e il separatore

Come ho stringa

String mainString="///Trade Time///Trade Number///Amount Rs.///"; 

Ora ho altra stringa

String subString="Amount" 

Quindi voglio estrarre la sottostringa Amount Rs. con l'aiuto della seconda stringa denominata sottostringa non con qualsiasi altro metodo Ma è shou Si può estrarre attraverso due parametri come prima è che ho indice no di Amount stringa e il secondo è fino alla stringa successiva ///.

risposta

18

prima ottenere l'indice della sottostringa:

int startIndex = mainString.IndexOf(subString); 

quindi ottenere l'indice dei seguenti tagli:

int endIndex = mainString.IndexOf("///", startIndex); 

allora si può ottenere la stringa che si desidera:

string amountString = mainString.Substring(startIndex, endIndex - startIndex); 
+0

@ Guffa, Grande ... signore ... grazie per l'aiuto ... Funziona .... – Harikrishna

1

Questo dovrebbe risolvere il problema credo:

mainString.substring(mainString.IndexOf("Amount Rs. "), "///") 

dove mainString.IndexOf("Amount Rs. ") è il Inizio Indice & "///" è l'Indice Fine.

+0

@ Ravia, scusa ma questo dà l'errore ... grazie per l'aiuto. – Harikrishna

1
string str = Regex.Match("///(?<String>[^/]*?" + subString + "[^/]*?)///").Groups["String"].Value; 

Da utilizzare String.Format ma l'utilizzo esatto di {x} in una stringa @ vincere un Regex non riesco a ricordare (Avete bisogno di raddoppiare la {}?)

NB: Questo presuppone che non si aspettava alcun /, così potrebbe essere migliorato un po '.

+2

Hai messo un @ prima della prima stringa letterale, quindi cercherebbe '\/\/\ /' piuttosto di '///'. Inoltre, '\ /' non è una sequenza di escape valida. Dovresti usare il metodo 'Regex.Escape' sul valore' subString' che hai inserito nell'espressione regolare affinché sia ​​sicuro per qualsiasi valore. – Guffa

0

Come un complimento per @ risposta di Guffa, è possibile effettuare un metodo di estensione fuori di esso:

Nota: Non c'è alcuna convalida per garantire che gli indici forniti sono nei limiti della stringa.

public static class StringExtensions 
{ 

    public static string SubstringBetweenIndexes(string value, int startIndex, int endIndex) 
    { 
     return value.Substring(startIndex, endIndex - startIndex); 
    } 

} 
Problemi correlati