Dada una cadena de entrada como " word1 word2 word3 word4 "
, ¿cuál sería el mejor enfoque para dividir esto como una matriz de cadenas en Go? Tenga en cuenta que puede haber cualquier número de espacios o caracteres con espaciado Unicode entre cada palabra.
En Java solo usaría someString.trim().split("\\s+")
.
(Nota: la posible cadena dividida duplicada utilizando una expresión regular en Go no da una respuesta de buena calidad. Proporcione un ejemplo real, no solo un enlace a la referencia de paquetes regexp
o strings
).
strings.Fields
no ignora los espacios en las partes citadas.shlex
para eso godoc.org/github.com/google/shlexSi está usando tip: regexp.Split
Divide los segmentos en subcadenas separadas por la expresión y devuelve un segmento de las subcadenas entre esas coincidencias de expresión.
El segmento devuelto por este método consta de todas las subcadenas de s no contenidas en el segmento devuelto por FindAllString. Cuando se llama a una expresión que no contiene metacaracteres, es equivalente a strings.SplitN.
Ejemplo:
El recuento determina el número de subcadenas que se devolverán:
fuente
Fields()
no devolverá cadenas vacías. Entonces, la cantidad de campos devueltos variará. Si está tratando de analizar algo consistente, entonces no funcionará para usted. Es posible que deba usar expresiones regulares siFieldsFunc()
tampoco funciona.Se me ocurrió lo siguiente, pero parece un poco demasiado detallado:
que evaluará a:
¿Existe una expresión más compacta o más idiomática?
fuente