2010-04-07 13 views
5

Jak możemy podzielić podciąg z ciąguJak możemy wyodrębnić podciąg napisu przez pozycję i separatora

jak mam String

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

Teraz mam inny ciąg

String subString="Amount" 

Następnie chcę wyodrębnić podciąg Amount Rs. przy pomocy drugiego ciągu o nazwie subString nie za pomocą żadnej innej metody Ale to shou ld być wyodrębnione za pomocą dwóch parametrów, takich jak na przykład: mam numer indeksu w łańcuchu wartości, a drugi - następny ciąg ///.

Odpowiedz

18

Pierwszy dostać indeks podciągu:

int startIndex = mainString.IndexOf(subString); 

następnie uzyskać indeks następujących ukośniki:

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

Następnie można uzyskać podciąg, który chcesz:

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

@ Guffa, Świetnie ... proszę ... dzięki za pomoc ... Działa .... – Harikrishna

1

To powinno rozwiązać problem wierzę:

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

gdzie mainString.IndexOf("Amount Rs. ") jest start Index & "///" rzecz jest indeks Koniec.

+0

@ Ravia, przepraszam, ale to daje błąd ... dzięki za pomoc. – Harikrishna

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

Należy użyć String.Format ale dokładny wykorzystanie {x} w @ ciąg wygrać regex nie pamiętam (czy trzeba podwoić ten {}?)

NB: ta zakłada, że ​​nie spodziewa każdy /, więc może być trochę się poprawił.

+2

Umieściłeś @ przed pierwszym literałem ciągu, więc raczej szukałoby '\/\/\ /' niż '///'. Poza tym '\ /' nie jest prawidłową sekwencją unikową. Powinieneś użyć metody 'Regex.Escape' na wartości' subString', którą umieścisz w wyrażeniu regularnym, aby była bezpieczna dla dowolnej wartości. – Guffa

0

jako komplement @ odpowiedź Guffa, można uczynić metodę rozszerzenia z niego:

Uwaga: Nie ma walidacji w celu zapewnienia, że ​​przewidziane są indeksy w granicach łańcucha.

public static class StringExtensions 
{ 

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

} 
Powiązane problemy