2011-08-26 22 views
5

Si hago esto:dividida cadena con delimitador en C#/ASP.Net

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

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

¿Cómo consigo una lista de lo que se utilizó delimitador entre cada división? Estoy tratando de recrear la cadena como un todo.

+0

Es imposible obtener los delimitadores de la matriz de cadenas divididas. –

Respuesta

3

Como se menciona en @Davy8, no hay un camino incorporado. Aquí hay un ejemplo MUY simple para comenzar a escribir un método personalizado.

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

Esto es imposible. La secuencia se ha dividido, así que ¿cómo se puede saber si la división se basó en una 'h' o una 'o'?

De todas formas, si usted puede hacer esto:

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

entonces por qué no también almacenar esos personajes?

2

No existe un sistema integrado que yo sepa. Probablemente sea mejor que escriba su propio método de división personalizado que realiza un seguimiento de los delimitadores.

Cuestiones relacionadas