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