2011-08-26 22 views
5

Se faccio questo:String split con delimitatore in C#/ASP.Net

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

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

Come posso ottenere un elenco di ciò che è stato utilizzato delimitatore tra ogni spaccatura? Sto cercando di ricreare la stringa nel suo complesso.

+0

È impossibile ottenere il delimitatore dalla matrice di stringa divisa. –

risposta

3

Come @ Davy8 menzionato, non esiste un modo integrato. Ecco un esempio MOLTO semplice per iniziare a scrivere un metodo personalizzato.

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

Questo è impossibile. La stringa è stata divisa, quindi come puoi sapere se la divisione è basata su una "h" o una "o"?

In ogni modo, se si può fare questo:

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

allora perché non anche memorizzare quei personaggi?

2

Non c'è un modo integrato di cui sono a conoscenza. Probabilmente stai meglio scrivendo il tuo metodo di split personalizzato che tiene traccia dei delimitatori.