2011-08-26 11 views
5

Nếu tôi làm điều này:Chuỗi chia tay với delimiter trong C#/ASP.Net

string text = "Hello, how are you?"; 

string[] split = text.Split('h', 'o'); 

Làm thế nào để có được một danh sách những gì delimiter được sử dụng giữa từng phần? Tôi đang cố gắng tái tạo toàn bộ chuỗi.

+0

Không thể lấy dấu phân cách (del) từ mảng chuỗi phân tách. –

Trả lời

3

Như @ Davy8 đã đề cập, không có cách nào được tích hợp sẵn. Dưới đây là một ví dụ rất đơn giản để giúp bạn tiếp tục viết một phương thức tùy chỉnh.

void Main() 
{ 
    string text = "Hello, how are you?"; 
    List<SplitDefinition> splitDefinitionList = CustomSplit(text, new char[] { 'h', 'o' }); 
} 

public List<SplitDefinition> CustomSplit(string source, char[] delimiters) 
{ 
    List<SplitDefinition> splitDefinitionList = new List<SplitDefinition>(); 

    foreach(char d in delimiters) 
    { 
     SplitDefinition sd = new SplitDefinition(d, source.Split(d));   
     splitDefinitionList.Add(sd); 
    } 

    return splitDefinitionList; 
} 

public class SplitDefinition 
{ 
    public SplitDefinition(char delimiter, string[] splits) 
    { 
     this.delimiter = delimiter; 
     this.splits = splits; 
    } 

    public char delimiter { get; set; } 
    public string[] splits { get; set; } 
} 
1

Điều này là không thể. Chuỗi đã được tách ra, vậy làm thế nào bạn có thể biết được sự phân chia dựa trên 'h' hay 'o'?

Anyways nếu bạn có thể làm điều này:

string[] split = text.Split('h', 'o'); 

thì tại sao không còn lưu trữ những ký tự?

2

Không có cách nào được xây dựng theo cách mà tôi biết. Có lẽ bạn nên viết phương pháp tách tùy chỉnh của riêng mình để theo dõi các dấu phân tách.