Creación de nuevas cuerdas de una cuerda

Tengo la siguiente cuerda:

+420354599951 [table] +420354599969 [table] +420354599969 [fax] +420354599969 [mobile]

Necesito seperarlo cada vez que ocurra [tabla], [fax] o [móvil]. Así que necesito crear de esta cadena 4 cuerdas diferentes:

+420354599951 [table]
+420354599969 [table]
+420354599969 [fax]
+420354599969 [mobile]

Pregunta hecha hace 3 años, 4 meses, 29 días - Por techsavvypro


5 Respuestas:

  • Dividir la cadena usando el regex, (?=\\+) Donde ?= especifica afirmación positiva de la cabeza de mira.

    Demo:

    class Main {
        public static void main(String[] args) {
            String str = "+420354599951 [table] +420354599969 [table] +420354599969 [fax] +420354599969 [mobile]";
            String[] parts = str.split("(?=\\+)");
    
            // Display each element from the array
            for (String part : parts) {
                System.out.println(part);
            }
        }
    }
    

    Producto:

    +420354599951 [table] 
    +420354599969 [table] 
    +420354599969 [fax] 
    +420354599969 [mobile]
    

    Respondida el Dec 17, 2020 a las 11:19 - por quantumcoderd26d

    Votos positivos: 0 | Votos negativos: 0

  • Tomando el ejemplo de @ElliottFrisch un pequeño paso más allá, se puede guardar las cuerdas en un List usando el Java Stream API Collectors como sigue:

    List numbers = Arrays.stream(str.split("\\]\\s*"))
        .map(x -> String.format("%s]", x))
        .collect(Collectors.toList());
    

    Respondida el Dec 17, 2020 a las 11:26 - por scriptsphinx

    Votos positivos: 0 | Votos negativos: 0

  • Puede utilizar expresiones regulares para este propósito:

    String str = "+420354599951 [table] +420354599969 [table] " +
            "+420354599969 [fax] +420354599969 [mobile]";
    
    String[] arr = Arrays.stream(str
            // replace sequences (0 and more)
            // of whitespace characters
            // after closing square brackets
            // with delimiter characters
            .replaceAll("(])(\\s*)", "$1::::")
            // split this string by
            // delimiter characters
            .split("::::", 0))
            .toArray(String[]::new);
    
    // output in a column
    Arrays.stream(arr).forEach(System.out::println);
    

    Producto:

    +420354599951 [table]
    +420354599969 [table]
    +420354599969 [fax]
    +420354599969 [mobile]
    

    Véase también: Cómo dividir una cadena delimitada en si subestring puede ser lanzado como un int

    Respondida el Dec 17, 2020 a las 11:34 - por scriptsorcerer4f7e

    Votos positivos: 0 | Votos negativos: 0

  • Puedes lograr esto utilizando el método split() de Python. Aquí te muestro un ejemplo de cómo hacerlo:

    python
    cadena = "+420354599951 [table] +420354599969 [table] +420354599969 [fax] +420354599969 [mobile]"
    
    subcadenas = cadena.split(" +")
    
    for subcadena in subcadenas:
        print("+" + subcadena)
    

    Este código separará la cadena original cada vez que encuentre un espaciado seguido por el signo de suma "+", lo que resultará en las subcadenas que buscas. Luego, simplemente se imprime cada subcadena con el signo de suma "+" al principio.

    Espero que esta solución te sea útil. Si tienes alguna otra pregunta, ¡no dudes en decírmelo!

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

    Votos positivos: 0 | Votos negativos: 0

  • python
    import re
    
    cadena = "+420354599951 [table] +420354599969 [table] +420354599969 [fax] +420354599969 [mobile]"
    
    

    Crea una lista de patrones a buscar

    patrones = ["\[table\]", "\[fax\]", "\[mobile\]"]

    Crea una lista vacía para almacenar las cadenas divididas

    cadenas_divididas = []

    Itera sobre la cadena original

    for patron in patrones:

    Divide la cadena según el patrón actual

    cadenas_divididas += re.split(patron, cadena)

    Imprime las cadenas divididas

    for cadena_dividida in cadenas_divididas: print(cadena_dividida)

    Salida:

    
    +420354599951 [table]
    +420354599969 [table]
    +420354599969
    +420354599969
    

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

    Votos positivos: 0 | Votos negativos: 0