Dada uma string de entrada como " word1 word2 word3 word4 "
, qual seria a melhor abordagem para dividir isso como uma matriz de strings no Go? Observe que pode haver qualquer número de espaços ou caracteres de espaçamento unicode entre cada palavra.
Em Java eu usaria apenas someString.trim().split("\\s+")
.
(Observação: uma possível sequência de divisão duplicada usando uma expressão regular em Go não fornece uma resposta de boa qualidade. Forneça um exemplo real, não apenas um link para a referência do pacote regexp
ou strings
.)
strings.Fields
não ignora espaços nas partes citadas.shlex
disso godoc.org/github.com/google/shlexSe você estiver usando a dica: regexp.Split
Divide fatias s em substrings separadas pela expressão e retorna uma fatia das substrings entre essas correspondências de expressão.
A fatia retornada por esse método consiste em todas as substrings de s não contidas na fatia retornada por FindAllString. Quando chamado em uma expressão que não contém metacaracteres, é equivalente a strings.SplitN.
Exemplo:
A contagem determina o número de substrings a serem retornadas:
fonte
Fields()
não retornará strings vazias. Portanto, o número de campos retornados irá variar. Se você está tentando analisar algo consistente, não funcionará para você. Pode ser necessário usar regex se umFieldsFunc()
também não funcionar.Eu vim com o seguinte, mas isso parece um pouco prolixo:
que avaliará para:
Existe uma expressão mais compacta ou mais idiomática?
fonte