Ruby 如何从字符串中删除第二个字符?

Ruby 如何从字符串中删除第二个字符?,ruby,string,Ruby,String,如果我想从字符串中删除最后一个字符,那么我只需使用 'string'[0..-1] 但是如何从字符串中删除第二个字符呢?我假设您的意思是删除第二个字符并保留字符串的其余部分 你好=>hllo s[0].chr+s[2..-1]最简单的方法是 sin = 'string' sout = sin[0] + sin[2..-1] str[1] = '' #1.9.3 或 我不确定它是否能在Jruby中工作,因为它有不同的处理字符串的方法。如果它不起作用,使用@Finbarr的方法,它应该会起

如果我想从字符串中删除最后一个字符,那么我只需使用

'string'[0..-1]

但是如何从字符串中删除第二个字符呢?

我假设您的意思是删除第二个字符并保留字符串的其余部分

你好=>hllo

s[0].chr+s[2..-1]

最简单的方法是

sin = 'string'
sout = sin[0] + sin[2..-1]
str[1] = ''   #1.9.3


我不确定它是否能在Jruby中工作,因为它有不同的处理字符串的方法。如果它不起作用,使用@Finbarr的方法,它应该会起作用。

在问题如何旁边,现在可能很重要,哪种方法是最快的方法

我用其他答案和slice的解决方案做了一个基准测试!和
sub

require 'benchmark'
N = 100_000 #Number of Test loop

STR = '0123456789'

REGEXP = /\A(.)./
Benchmark.bmbm(10) {|b|

  b.report('str[0].chr+str[2..-1]') { N.times { 
        str = STR.dup
        str = str[0].chr+str[2..-1]
      }}
  b.report('str[1]') { N.times { 
        str = STR.dup
        str[1] = ''
      }}
  b.report('slice!') { N.times { 
        str = STR.dup
        str.slice!(1)
      }}          
  b.report('sub!') { N.times { 
        str = STR.dup
        str.sub!(/\A(.)./, '\1')
      }}          
  b.report('sub!/REGEXP') { N.times { 
        str = STR.dup
        str.sub!(REGEXP, '\1')  #Avoid reinitialization of regex for each loop
      }}
} #Benchmark
我的结果(windows,Ruby 1.9.3)


我不想投反对票,因为我不想卑鄙,但你想过吗?或者您是否阅读过任何书籍或文档?
字符串[0..-1]
不会删除该字符。它返回字符串末尾的所有字符<代码>'string'[0..-1]=>“string”
require 'benchmark'
N = 100_000 #Number of Test loop

STR = '0123456789'

REGEXP = /\A(.)./
Benchmark.bmbm(10) {|b|

  b.report('str[0].chr+str[2..-1]') { N.times { 
        str = STR.dup
        str = str[0].chr+str[2..-1]
      }}
  b.report('str[1]') { N.times { 
        str = STR.dup
        str[1] = ''
      }}
  b.report('slice!') { N.times { 
        str = STR.dup
        str.slice!(1)
      }}          
  b.report('sub!') { N.times { 
        str = STR.dup
        str.sub!(/\A(.)./, '\1')
      }}          
  b.report('sub!/REGEXP') { N.times { 
        str = STR.dup
        str.sub!(REGEXP, '\1')  #Avoid reinitialization of regex for each loop
      }}
} #Benchmark
Rehearsal ---------------------------------------------------------
str[0].chr+str[2..-1]   0.203000   0.000000   0.203000 (  0.171875)
str[1]                  0.094000   0.000000   0.094000 (  0.109375)
slice!                  0.094000   0.000000   0.094000 (  0.125000)
sub!                    0.250000   0.016000   0.266000 (  0.265625)
sub!/REGEXP             0.265000   0.016000   0.281000 (  0.234375)
------------------------------------------------ total: 0.938000sec

                            user     system      total        real
str[0].chr+str[2..-1]   0.188000   0.000000   0.188000 (  0.171875)
str[1]                  0.125000   0.000000   0.125000 (  0.109375)
slice!                  0.172000   0.000000   0.172000 (  0.125000)
sub!                    0.218000   0.015000   0.233000 (  0.265625)
sub!/REGEXP             0.282000   0.000000   0.282000 (  0.250000)