Não recebi um regex otimizado que me dividiu uma String com base na primeira ocorrência de espaço em branco:
var str="72 tocirah sneab";
Eu preciso obter:
[
"72",
"tocirah sneab",
]
javascript
regex
Luca
fonte
fonte
Respostas:
Se você se importa apenas com o caractere de espaço (e não com guias ou outros caracteres de espaço em branco) e se preocupa apenas com tudo antes do primeiro espaço e depois do primeiro espaço, é possível fazê-lo sem uma expressão regular como esta:
Observe que, se não houver espaço, a primeira linha retornará uma string vazia e a segunda linha retornará a string inteira. Certifique-se de que é o comportamento que você deseja nessa situação (ou que essa situação não ocorra).
fonte
Javascript não suporta lookbehinds, então
split
não é possível.match
trabalho:Outro truque:
e quanto a:
e porque não
ou talvez
Atualização de 2019 : a partir do ES2018, há suporte para lookbehinds:
fonte
str.match(/^(\S+)\s(.*)/).slice(1)
vai trabalhar para uma string que não tem espaçoNo ES6, você também pode
fonte
Tarde para o jogo, eu sei, mas parece haver uma maneira muito simples de fazer isso:
Isso sairá
arr[0]
com"72"
earr[1]
com"tocirah sneab"
. Note que arr [2] estará vazio, mas você pode simplesmente ignorá-lo.Para referência:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split#Capturing_parentheses
fonte
mas ainda acho que existe uma maneira mais rápida.
fonte
A solução do georg é boa, mas é interrompida se a string não contiver nenhum espaço em branco. Se suas seqüências de caracteres tiverem a chance de não conter espaços em branco, é mais seguro usar .split e capturar grupos como este:
fonte
Você também pode usar .replace para substituir apenas a primeira ocorrência,
Deixando de fora o / g.
DEMO
fonte
Basta dividir a corda em uma matriz e colar as peças necessárias. Essa abordagem é muito flexível, funciona em muitas situações e é fácil de raciocinar. Além disso, você só precisa de uma chamada de função.
Como alternativa, se você quiser escolher o que precisa diretamente da string, poderá fazer algo assim:
Ou assim:
No entanto, sugiro o primeiro exemplo.
Demonstração de trabalho: jsbin
fonte
Sempre que eu preciso obter uma classe de uma lista de classes ou parte de um nome ou ID de classe, eu sempre uso split (), em seguida, obtenha-a especificamente com o índice de matriz ou, na maioria dos casos, pop () para obter o último elemento ou shift () para obter o primeiro.
Este exemplo obtém as classes da div "gallery_148 ui-classable" e retorna o ID da galeria 148.
Tenho certeza de que poderia ser compactado em menos linhas, mas o deixei expandido para facilitar a leitura.
fonte
Eu precisava de um resultado um pouco diferente.
Eu queria a primeira palavra, e o que veio depois dela - mesmo que estivesse em branco.
então se a entrada é que
oneword
você recebeoneword
e''
.Se a entrada é que
one word and some more
você recebeone
eword and some more
.fonte
Não sei por que todas as outras respostas são tão complicadas, quando você pode fazer tudo em uma linha, lidando com a falta de espaço também.
Como exemplo, vamos obter o primeiro e "outros" componentes de um nome:
fonte
A função a seguir sempre dividirá a frase em 2 elementos. O primeiro elemento conterá apenas a primeira palavra e o segundo elemento conterá todas as outras palavras (ou será uma sequência vazia).
fonte