2010-04-07 19 views
5

Làm thế nào chúng ta có thể chia các chuỗi con từ chuỗiLàm sao chúng ta có thể trích xuất chuỗi con của chuỗi bởi vị trí và tách

Giống như tôi đã có chuỗi

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

Bây giờ tôi có chuỗi khác

String subString="Amount" 

Sau đó, tôi muốn giải nén chuỗi con Amount Rs. với sự trợ giúp của chuỗi thứ hai có tên là subString không phải bởi bất kỳ phương pháp nào khác Nhưng nó shou ld được trích xuất thông qua hai tham số như đầu tiên là tôi có chỉ số không có số lượng chuỗi và thứ hai là cho đến khi chuỗi tiếp theo ///.

Trả lời

18

tiên nhận được chỉ số của chuỗi con:

int startIndex = mainString.IndexOf(subString); 

Sau đó có được chỉ số của dấu gạch chéo sau:

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

Sau đó, bạn có thể nhận được các chuỗi con mà bạn muốn:

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

@ Guffa, Tuyệt vời ... sir..thanks cho sự giúp đỡ ... Nó hoạt động .... – Harikrishna

1

này nên giải quyết vấn đề của bạn tôi tin rằng:

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

nơi mainString.IndexOf("Amount Rs. ")Bắt đầu Index & "///"End Index.

+0

@ Ravia, xin lỗi nhưng điều này gây ra lỗi ... cảm ơn sự trợ giúp. – Harikrishna

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

Nên sử dụng String.Format nhưng việc sử dụng chính xác của {x} trong một chuỗi @ giành chiến thắng một Regex Tôi không thể nhớ (làm bạn cần phải tăng gấp đôi lên {}?)

NB: này giả định bạn không mong đợi bất kỳ /, vì vậy có thể là cải thiện một chút.

+2

Bạn đã đặt một @ trước chuỗi chữ đầu tiên, vì vậy nó sẽ tìm kiếm '\/\/\ /' chứ không phải than '///'. Bên cạnh đó, '\ /' không phải là một chuỗi thoát hợp lệ. Bạn nên sử dụng phương thức 'Regex.Escape' trên giá trị' subString' mà bạn đặt vào biểu thức chính quy để nó an toàn cho bất kỳ giá trị nào. – Guffa

0

Như một lời khen để @ câu trả lời Guffa, bạn có thể thực hiện một phương pháp mở rộng ra khỏi nó:

Lưu ý: Không có xác nhận để đảm bảo rằng các chỉ số được cung cấp là trong giới hạn của chuỗi.

public static class StringExtensions 
{ 

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

} 
Các vấn đề liên quan