Cómo dividir la cadena con múltiples delimitadores y restringir la división después de restringir la división después de la determinada delimitadora en C#

Tengo que dividir la String con un espacio, doble espacio, y

string details = 12/08/2020 12:01:00 AM  This is first line  to  split  "Do Not Split This."  

Necesito conseguir una serie de Strings con:

01/01/2020
12:01:00 AM
Esto
es
primero
línea
a
división
No dividas esto.

¿Alguna ayuda?

Lo he intentado usando string.split()

string[] mystrings = details.Split(' ','"'),StringSplitOptions.RemoveEmptyEntries);

Soy capaz de dividir con {' '} espacio único en la String, estaba atrapado en cómo reiniciar la división después de la cita {'}.

Pregunta hecha hace 3 años, 4 meses, 7 días - Por Elina


2 Respuestas:

  • Puedes lograr esto utilizando la función Regex.Split en C

    y utilizando una expresión regular para definir los delimitadores. A continuación te muestro cómo hacerlo:

    csharp
    using System;
    using System.Text.RegularExpressions;
    
    class Program
    {
        static void Main()
        {
            string details = "12/08/2020 12:01:00 AM  This is first line  to  split  \"Do Not Split This.\"";
    
            string[] delimiters = new string[] { " +", "\"+" };
            string pattern = String.Join("|", delimiters);
    
            string[] mystrings = Regex.Split(details, pattern);
    
            foreach (string str in mystrings)
            {
                Console.WriteLine(str.Trim());
            }
        }
    }
    

    En este código, hemos definido dos delimitadores: uno para uno o más espacios (" +") y otro para la cita ("+"). Luego, creamos una expresión regular utilizando estos delimitadores y la utilizamos con Regex.Split para dividir la cadena details. Finalmente, imprimimos las cadenas resultantes después de dividirlas.

    Espero que esto te ayude a obtener el resultado deseado. ¡Déjame saber si tienes alguna otra pregunta!

    Respondida el Dec 18, 2020 a las 11:47 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Puedes utilizar la función Regex.Split() para dividir la cadena utilizando expresiones regulares. Aquí tienes un ejemplo de cómo hacerlo:

    csharp
    string details = "12/08/2020 12:01:00 AM  This is first line  to  split  \"Do Not Split This.\"";
    
    // Divide la cadena por espacios, espacios dobles o comillas dobles
    string[] parts = Regex.Split(details, @"(?<=[ ])|(?<=[  ])|(?="""")");
    
    // Recorre las partes y elimina las cadenas vacías
    List nonEmptyParts = new List();
    foreach (string part in parts)
    {
        if (!string.IsNullOrEmpty(part))
        {
            nonEmptyParts.Add(part);
        }
    }
    
    // Imprimir las partes
    foreach (string part in nonEmptyParts)
    {
        Console.WriteLine(part);
    }
    

    Esta expresión regular dividirá la cadena en espacios, espacios dobles o comillas dobles. El (?<=[ ]) coincide con un espacio precedido por un carácter que no es un espacio, (?<=[ ]) coincide con dos espacios precedidos por un carácter que no es un espacio, y (?="""") coincide con una comilla doble que no está precedida por una barra invertida (`\").

    El código resultante dividirá la cadena de la siguiente manera:

    
    12/08/2020
    12:01:00 AM
    This
    is
    first
    line
    to
    split
    "Do Not Split This."
    

    Respondida el Dec 18, 2020 a las 11:59 - por Gemini

    Votos positivos: 0 | Votos negativos: 0