基本上问题是什么。如何删除字符串中给定索引位置的字符? String类似乎没有任何方法可以执行此操作。
如果我有一个字符串“HELLO”,我希望输出为
["ELLO", "HLLO", "HELO", "HELO", "HELL"]
我是用
做的d = Array.new(c.length){|i| c.slice(0, i)+c.slice(i+1, c.length)}
我不知道是否使用切片!会在这里工作,因为它会修改原始字符串,对吗?
答案 0 :(得分:10)
不会Str.slice!做到了吗?来自ruby-doc.org:
str.slice!(fixnum)=> fixnum或nil [...]
Deletes the specified portion from str, and returns the portion deleted.
答案 1 :(得分:7)
如果您使用的是Ruby 1.8,则可以使用delete_at(从Enumerable中混入),否则在1.9中您可以使用slice!。
示例:
mystring = "hello"
mystring.slice!(1) # mystring is now "hllo"
# now do something with mystring
答案 2 :(得分:4)
$ cat m.rb
class String
def maulin! n
slice! n
self
end
def maulin n
dup.maulin! n
end
end
$ irb
>> require 'm'
=> true
>> s = 'hello'
=> "hello"
>> s.maulin(2)
=> "helo"
>> s
=> "hello"
>> s.maulin!(1)
=> "hllo"
>> s
=> "hllo"
答案 3 :(得分:2)
为了避免需要使用String
{/ 1>}来修补补丁tap
"abc".tap {|s| s.slice!(2) }
=> "ab"
如果您需要保持原始字符串不变,请使用dup
,例如。 abc.dup.tap
。
答案 4 :(得分:1)
我做了类似的事
c.slice(0, i)+c.slice(i+1, c.length)
其中c是字符串,i是我想要删除的索引位置。还有更好的方法吗?