Buen dia a todos, estoy trabajando en un sistema de manejo de
trabajadores y quisiera exponer aqui mis dudas. el problema es que
quiero generar el CURP Automaticamente (para los que no estan en Mexico
CURP = Clave Unica de Registro Publico y se genera con los datos de la
persona)
El primer punto, con el que tengo problemas es que necesito eliminar del
nombre y del apellido paterno todos los prefijos “DE” “DEL” “LA” “LAS”
“LOS”. etc… y tomar la primera letra… de modo que si la persona de
apellida “DE LA VEGA”, yo tengo que tomar la “V” o si se apellida “DE
LOS MONTEROS” tomaria la “M”.
Despues necesito la primera vocal del apellido paterno, siempre y cuando
no sea la Primera letra del apellido, ejemplo si se apellida “LOPEZ”
tomo la “O”, pero su se apellida “AGUIRRE” tomo la “U”.
hice esto, y no funciona:
TEST 1.-
prefijos = [ “.”, “,”, "DE ", "DEL ", "LA ", "LOS ", "LAS ", "Y " ]
self.apellido_paterno = apellido_paterno.upcase
ap_temp = apellido_paterno
prefijos.each do |e|
if ap_temp.include? e
ap_temp = ap_temp.delete e
end
end
self.curp = ap_temp
TEST 2.-
prefijos = [ “.”, “,”, "DE ", "DEL ", "LA ", "LOS ", "LAS ", "Y " ]
self.apellido_paterno = apellido_paterno.upcase
ap_temp = apellido_paterno
if ap_temp.include? prefijos
ap_temp.delete prefijos
end
self.curp = ap_temp
Saludos
Hola Luis, te echo un cable con la primera parte, fue un ejemplo que
probe
al toque:
a=“DE LA AGUIRRE”
a.gsub(/\s?(DE|LA)\s/,"")
=> “AGUIRRE”
Saludos.
El dÃa 16 de junio de 2008 16:00, Luis M. <
[email protected]> escribió:
Luis M. wrote:
Buen dia a todos, estoy trabajando en un sistema de manejo de
trabajadores y quisiera exponer aqui mis dudas. el problema es que
quiero generar el CURP Automaticamente (para los que no estan en Mexico
CURP = Clave Unica de Registro Publico y se genera con los datos de la
persona)
El primer punto, con el que tengo problemas es que necesito eliminar del
nombre y del apellido paterno todos los prefijos “DE” “DEL” “LA” “LAS”
“LOS”. etc… y tomar la primera letra… de modo que si la persona de
apellida “DE LA VEGA”, yo tengo que tomar la “V” o si se apellida “DE
LOS MONTEROS” tomaria la “M”.
Despues necesito la primera vocal del apellido paterno, siempre y cuando
no sea la Primera letra del apellido, ejemplo si se apellida “LOPEZ”
tomo la “O”, pero su se apellida “AGUIRRE” tomo la “U”.
hice esto, y no funciona:
TEST 1.-
prefijos = [ “.”, “,”, "DE ", "DEL ", "LA ", "LOS ", "LAS ", "Y " ]
self.apellido_paterno = apellido_paterno.upcase
ap_temp = apellido_paterno
prefijos.each do |e|
if ap_temp.include? e
ap_temp = ap_temp.delete e
end
end
self.curp = ap_temp
TEST 2.-
prefijos = [ “.”, “,”, "DE ", "DEL ", "LA ", "LOS ", "LAS ", "Y " ]
self.apellido_paterno = apellido_paterno.upcase
ap_temp = apellido_paterno
if ap_temp.include? prefijos
ap_temp.delete prefijos
end
self.curp = ap_temp
Saludos
Lo primero es que te enteres que cadenas tienen prefijo y cuales no
#!/usr/bin/ruby
BUSCA PREFIJOS
def tiene_prefijo_a_eliminar( cadena )
er = Regexp.compile("^(DE\s|DEL\s|LA\s|LOS\s|LAS\s|Y\s)+[a-zA-z]*$")
return ( er.match(cadena) ? 1 : 0 )
end
puts tiene_prefijo_a_eliminar(“Y PLAUCHU”)
puts tiene_prefijo_a_eliminar(“DE LA VEGA”)
Edwin Plauchu wrote:
Luis M. wrote:
Buen dia a todos, estoy trabajando en un sistema de manejo de
trabajadores y quisiera exponer aqui mis dudas. el problema es que
quiero generar el CURP Automaticamente (para los que no estan en Mexico
CURP = Clave Unica de Registro Publico y se genera con los datos de la
persona)
El primer punto, con el que tengo problemas es que necesito eliminar del
nombre y del apellido paterno todos los prefijos “DE” “DEL” “LA” “LAS”
“LOS”. etc… y tomar la primera letra… de modo que si la persona de
apellida “DE LA VEGA”, yo tengo que tomar la “V” o si se apellida “DE
LOS MONTEROS” tomaria la “M”.
Despues necesito la primera vocal del apellido paterno, siempre y cuando
no sea la Primera letra del apellido, ejemplo si se apellida “LOPEZ”
tomo la “O”, pero su se apellida “AGUIRRE” tomo la “U”.
hice esto, y no funciona:
TEST 1.-
prefijos = [ “.”, “,”, "DE ", "DEL ", "LA ", "LOS ", "LAS ", "Y " ]
self.apellido_paterno = apellido_paterno.upcase
ap_temp = apellido_paterno
prefijos.each do |e|
if ap_temp.include? e
ap_temp = ap_temp.delete e
end
end
self.curp = ap_temp
TEST 2.-
prefijos = [ “.”, “,”, "DE ", "DEL ", "LA ", "LOS ", "LAS ", "Y " ]
self.apellido_paterno = apellido_paterno.upcase
ap_temp = apellido_paterno
if ap_temp.include? prefijos
ap_temp.delete prefijos
end
self.curp = ap_temp
Saludos
Lo primero es que te enteres que cadenas tienen prefijo y cuales no
#!/usr/bin/ruby
BUSCA PREFIJOS
def tiene_prefijo_a_eliminar( cadena )
er = Regexp.compile("^(DE\s|DEL\s|LA\s|LOS\s|LAS\s|Y\s)+[a-zA-z]*$")
return ( er.match(cadena) ? 1 : 0 )
end
puts tiene_prefijo_a_eliminar(“Y PLAUCHU”)
puts tiene_prefijo_a_eliminar(“DE LA VEGA”)
Despues de que te has enterado cual cadena si se parsea y cual no
procedes a meter a las que si se parsean en una funcion que se llame
def quitar_prefijos( cadena )
#Cortamos la cadena con split utilizando los espacios en blanco
#lista_palabras = cadena.split(" “)
#return lista_palabras[-1]
return cadena.split(” ")[-1]
end
El primer punto, con el que tengo problemas es que necesito
eliminar del
nombre y del apellido paterno todos los prefijos “DE” “DEL” “LA” “LAS”
“LOS”. etc… y tomar la primera letra… de modo que si la
persona de
apellida “DE LA VEGA”, yo tengo que tomar la “V” o si se apellida “DE
LOS MONTEROS” tomaria la “M”.
Te ayudo lo mas rápido que pueda que estoy en un ciber y se me acaba
el tiempo, espero que te sirva.
- convierte la cadena del apellido en un Array, usando scan(/w+/)
- elimina del array los prefijos deseados, usando include o dele_if
- el elemento del array resultante pasalo de nuevo a string con
to_s.first.upcase (o algo asi)
Despues necesito la primera vocal del apellido paterno, siempre y
cuando
no sea la Primera letra del apellido, ejemplo si se apellida “LOPEZ”
tomo la “O”, pero su se apellida “AGUIRRE” tomo la “U”.
- if “apellido”[0.1].include?( A E I O U) guardo la letra
“apellido”[0.1] si no, guardo "apellido"e[0.2]
Mas info
http://www.ruby-doc.org/core/classes/String.html#M000741
http://www.ruby-doc.org/core/classes/Array.html#M000307
Lo dicho, espero te sirva.
Saludos.
Edwin Plauchu wrote:
Edwin Plauchu wrote:
Luis M. wrote:
Buen dia a todos, estoy trabajando en un sistema de manejo de
trabajadores y quisiera exponer aqui mis dudas. el problema es que
quiero generar el CURP Automaticamente (para los que no estan en Mexico
CURP = Clave Unica de Registro Publico y se genera con los datos de la
persona)
El primer punto, con el que tengo problemas es que necesito eliminar del
nombre y del apellido paterno todos los prefijos “DE” “DEL” “LA” “LAS”
“LOS”. etc… y tomar la primera letra… de modo que si la persona de
apellida “DE LA VEGA”, yo tengo que tomar la “V” o si se apellida “DE
LOS MONTEROS” tomaria la “M”.
Despues necesito la primera vocal del apellido paterno, siempre y cuando
no sea la Primera letra del apellido, ejemplo si se apellida “LOPEZ”
tomo la “O”, pero su se apellida “AGUIRRE” tomo la “U”.
hice esto, y no funciona:
TEST 1.-
prefijos = [ “.”, “,”, "DE ", "DEL ", "LA ", "LOS ", "LAS ", "Y " ]
self.apellido_paterno = apellido_paterno.upcase
ap_temp = apellido_paterno
prefijos.each do |e|
if ap_temp.include? e
ap_temp = ap_temp.delete e
end
end
self.curp = ap_temp
TEST 2.-
prefijos = [ “.”, “,”, "DE ", "DEL ", "LA ", "LOS ", "LAS ", "Y " ]
self.apellido_paterno = apellido_paterno.upcase
ap_temp = apellido_paterno
if ap_temp.include? prefijos
ap_temp.delete prefijos
end
self.curp = ap_temp
Saludos
Lo primero es que te enteres que cadenas tienen prefijo y cuales no
#!/usr/bin/ruby
BUSCA PREFIJOS
def tiene_prefijo_a_eliminar( cadena )
er = Regexp.compile("^(DE\s|DEL\s|LA\s|LOS\s|LAS\s|Y\s)+[a-zA-z]*$")
return ( er.match(cadena) ? 1 : 0 )
end
puts tiene_prefijo_a_eliminar(“Y PLAUCHU”)
puts tiene_prefijo_a_eliminar(“DE LA VEGA”)
Despues de que te has enterado cual cadena si se parsea y cual no
procedes a meter a las que si se parsean en una funcion que se llame
def quitar_prefijos( cadena )
#Cortamos la cadena con split utilizando los espacios en blanco
#lista_palabras = cadena.split(" “)
#return lista_palabras[-1]
return cadena.split(” ")[-1]
end
Y al final te queda algo como esto:
#!/usr/bin/ruby
BUSCA PREFIJOS
def tiene_prefijo_a_eliminar( cadena )
er = Regexp.compile("^(DE\s|DEL\s|LA\s|LOS\s|LAS\s|Y\s)+[a-zA-z]*$")
return ( er.match(cadena) ? 1 : 0 )
end
def quitar_prefijos( cadena )
return cadena.split(" ")[-1]
end
puts tiene_prefijo_a_eliminar(“Y PLAUCHU”)
puts tiene_prefijo_a_eliminar(“DE LA VEGA”)
puts quitar_prefijos( “DE LA VEGA” )
puts quitar_prefijos( “Y PLAUCHU” )
Bueno pues parece que cada uno pone su forma de hacerlo asi que vamos
agregando mi forma
si lo que quieres es obtener la primera vocal eliminando lo que
comentaste
seria algo asi como
var = “DE LOS MONTEROS”
vocal = var.gsub(/DE|DEL|LA|LOS|Y/,"").lstrip[1…-1][/[AEIOU]/]
donde con gsub quitas esas extas que quieres y luego eliminas espacios
blancos con lstrip despues tomas la cadena apartir del 2do caracter
esto
por si empieza por vocal tomar la 2da vocal y despues buscamos las
vocales y
nos dara la primera
si lo que quieres es la primera letra pues
letra = var.gsub(/DE|DEL|LA|LOS|Y/,"").lstrip[0…0]
eso nos daria la primera letra
para no repetir los gsub quizas un
sinExtras = var.gsub(/DE|DEL|LA|LOS|Y/,"").lstrip
vocal = sinExtras[1…-1][/[AEIOU]/]
letra = sinExtras[0…0]
como puedes ver hay formas infinitas de hacerlo ahi elijes alguna que te
guste mas
Ing Omar S. Jimenez Becerra
El dÃa 16 de junio de 2008 16:00, Luis M. <
[email protected]> escribió:
Aun una version mas reducida
#!/usr/bin/ruby
def eliminar_prefijos( cadena )
er = Regexp.compile("^(DE\s|DEL\s|LA\s|LOS\s|LAS\s|Y\s)+[a-zA-z]*$")
return ( er.match(cadena) ? cadena.split(" ")[-1] : cadena )
end
puts eliminar_prefijos(“Y PLAUCHU”)
puts eliminar_prefijos(“DE LA VEGA”)
puts eliminar_prefijos(“BUBA”)
hola,
seguro que hay casos en los que no vale, pero por
diversión
apellido.split(/\s/)[-1].upcase.scan(/^.|[A,E,I,O,U]/)[0,2].to_s
donde te quedas con la última palabra del apellido (funciona si no hay
apellidos compuestos, o si están separados por guión, como en
gómez-acebo), luego te quedas con el primer carácter siempre ^. y
además con todas las vocales. Del resultado te quedas con los dos
primeros caracteres y los pasas a cadena.
Si tienes tildes, no funciona, así que habría que normalizar previamente.
“DE LA ROSA” = “RO”
“AGUIRRE”=“AU”
saludos,
javier ramírez