Eliminar partes de STRING

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.

  1. convierte la cadena del apellido en un Array, usando scan(/w+/)
  2. elimina del array los prefijos deseados, usando include o dele_if
  3. 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”.

  1. 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