Retirar prefixo de nomes
06/12/2016 17:09
0
Olá a todos,

preciso da ajuda de vocês, estou criando um código para criação de logins automático, as regras são as seguites:
(primeironome.ultimonome)
 se existe (primeironome.meiodonome)
porém os prefixos de ligação "de,das,dos...etc" não faz parte do login, então eu usei REGEX: 

palavra = palavra.replaceAll("((?i)(\s+)(e|dos|das|do|da|do|de|di|du)(\s+))|((?i)(\s+)(e|dos|das|do|da|do|de|di|du))|((?i)(e|dos|das|do|da|do|de|di|du))(\s+)","")

mas dessa forma corta também pedaços do nome: por exemplo: "andrade" fica: "andra"
e se eu deixa somente

palavra = palavra.replaceAll("((?i)(\s+)(e|dos|das|do|da|do|de|di|du)(\s+))", "")

não retira :de algumacoisa, ou
                   :algumacoisa de

pra ler as váriavei estou usando JOptionPane:

   first = JOptionPane.showInputDialog("Entre com o primeiro nome*")     
   middle = JOptionPane.showInputDialog("Entre com o segundo nome")
   last = JOptionPane.showInputDialog("Entre com o ultimo nome*")  
                 
Tags: Grails


0
Olá Marcelo acho que o código abaixo resolve o seu problema:
Nesse exemplo usaremos o nome de exemplo: Joao da padaria dos Santos
def nmUsuario = "Joao da padaria dos Santos"
def nomeArr = nmUsuario.split() // armazena cada parte do nome em um array
  def tamanho = nomeArr.length  // tamanho do array baseado em quantas partes o nome tem
  def nmAbv = nomeArr[0] + "." + nomeArr[tamanho-1]  // Armazena o primeironome.ultimonome  na variável nmAbv
  print nmAbv


A saída será: Joao.Santos

Obs: Você não precisará mais dividir a entrada do nome em "first", "middle" e last, será somente uma entrada com o nome completo.
06/12/2016 18:14


0
Isto é apenas uma simulação de uma aplicação que só realiza a leitura de forma separada,só não notei que estava tendo um preenchimento para prefixos, então não precisarei mais retirar as ligações. Mas  o split ainda poderá me ajudar já que um dos meus casos teste deverei dividir o meio do nome em partes. Tendo os usuários "marcelo.faria" e "marcelo.araujo" já criados e caso queira entrar um com o nome:
"Marcelo Faria de Souza Araujo" dessa forma ficará:
first: "marcelo"
middle: "faria souza"
last: "araujo"
vou dividir o middle por espaços e enquanto não houver usuários parecidos irá avançar um nome do meio do nome, desta forma será criado um usuário com login:
marcelo.souza



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto