![Extraindo a primeira letra de um nome e todo o sobrenome](https://rvso.com/image/1595497/Extraindo%20a%20primeira%20letra%20de%20um%20nome%20e%20todo%20o%20sobrenome.png)
Preciso usar Regex para obter a primeira letra do nome de um usuário e também o sobrenome completo. O que tenho atualmente funciona bem para usuários que possuem dois nomes, mas o código não funciona quando um terceiro nome é incluído.
Isso é o que tenho atualmente:^(.)[^ ]* (\w+)$
Trabalha para:
- Tom Jones → TJones.
Não funciona para:
- Tom SmithJones. Deve retornar TJones.
Além disso, gostaria de poder excluir quaisquer caracteres especiais no sobrenome - devem ser apenas caracteres alfabéticos.
ATUALIZAÇÃO: encontrei este código em uma postagem diferente (\w).*(\s+\w+)$
esse código consegue obter o primeiro caractere e a última palavra, mas não remove o espaço.
Exemplo: Tom Mike Andrew Jones -> T Jones em vez de TJones.
Em seguida, atualizei para (\w).*(\s+)(\w+)$ e funciona perfeitamente. Agora resta descobrir como ignorar caracteres especiais para sobrenomes como Pierre-Louis, por exemplo.
Algum de vocês, especialistas em regex, conhece uma maneira de ignorar os caracteres especiais?
Responder1
Você pode alterar o regex para o seguinte,
(\w).*\W+(\w+)$
em vez de \s
usuário \W
(W maiúsculo), que corresponde a quaisquer caracteres que não sejam palavras.