2010-04-07 23 views
5

提取字符串的子如何才能從字符串我們如何通過位置和分離

劃分子像我有串

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

現在我有其他的字符串

String subString="Amount" 

然後,我想通過第二個字符串subString的幫助來提取子字符串Amount Rs.而不是通過任何其他方法但它應該ld通過兩個參數提取,比如第一個是我有Index字符串的索引號,第二個是直到下一個字符串///。

回答

18

首先得到該字符串的索引:

int startIndex = mainString.IndexOf(subString); 

然後得到以下斜槓的指標:

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

然後你就可以得到你想要的字符串:

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

@ Guffa,Great ...先生..感謝您的幫助......它的工作原理...... – Harikrishna 2010-04-07 09:26:27

1

這應該解決您的問題,我相信:

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

其中mainString.IndexOf("Amount Rs. ")開始指數 & "///"結束索引

+0

@ Ravia,抱歉,但是這給出了錯誤...感謝您的幫助。 – Harikrishna 2010-04-07 09:27:21

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

應該使用String.Format{x}在@字符串的確切用法贏得了正則表達式我不記得(你需要加倍的{}?)

注:這是假設你不希望任何/,因此可能會改進了一點。

+2

您在第一個字符串文字之前放置了@,所以它會查找'\/\/\ /'比'///'更好。另外,'\ /'不是有效的轉義序列。你應該在'subString'的值上使用'Regex.Escape'方法,這個方法可以放在正則表達式中,以保證任何值的安全。 – Guffa 2010-04-07 09:57:53

0

作爲一種恭維@ Guffa的回答,您可以擴展方法出來的:

注:有沒有驗證,以確保所提供的指標都在串的邊界。

public static class StringExtensions 
{ 

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

}