libro - Quitar el signo "@" y todo lo que sigue en Ruby
fahrenheit 451 ray bradbury (5)
La String#split
será útil. Dada una cadena y un argumento, devuelve una matriz que divide la cadena en elementos separados en esa cadena. Así que si tuvieras:
e = [email protected]
e.split("@")
#=> ["test", "testing.com"]
Por lo tanto, tomaría e.split("@")[0]
para la primera parte de la dirección.
Estoy trabajando en una aplicación en la que necesito transmitir el signo "@" de la dirección de correo electrónico del usuario como su nombre y apellido. Por ejemplo, si el usuario tiene una dirección de correo electrónico "[email protected]" que cuando el usuario envía el formulario, elimino "@ example.com" del correo electrónico y asigno "usuario" como nombre y apellido.
He investigado, pero no pude encontrar una manera de hacerlo en Ruby. Alguna sugerencia ??
Para atrapar cualquier cosa antes del signo @:
my_string = "[email protected]"
substring = my_string[/[^@]+/]
# => "user"
Puedes dividir en "@" y solo usar la primera parte.
email.split("@")[0]
Eso te dará la primera parte antes de la "@".
Solo divide el símbolo @ y toma lo que fue antes.
string.split(''@'')[0]
usa gsub y una expresión regular
first_name = email.gsub(/@[^/s]+/,"")
irb(main):011:0> Benchmark.bmbm do |x|
irb(main):012:1* email = "[email protected]"
irb(main):013:1> x.report("split"){100.times{|n| first_name = email.split("@")[0]}}
irb(main):014:1> x.report("regex"){100.times{|n| first_name = email.gsub(/@[a-z.]+/,"")}}
irb(main):015:1> end
Rehearsal -----------------------------------------
split 0.000000 0.000000 0.000000 ( 0.000000)
regex 0.000000 0.000000 0.000000 ( 0.001000)
-------------------------------- total: 0.000000sec
user system total real
split 0.000000 0.000000 0.000000 ( 0.001000)
regex 0.000000 0.000000 0.000000 ( 0.000000)
=> [#<Benchmark::Tms:0x490b810 @label="", @stime=0.0, @real=0.00100016593933105, @utime=0.0, @cstime=0.0, @total=0.0, @cutime=0.0>, #<Benchmark::Tms:0x4910bb0 @
label="", @stime=0.0, @real=0.0, @utime=0.0, @cstime=0.0, @total=0.0, @cutime=0.0>]