删除Ruby中索引位置的字符

Basically what the question says. How can I delete a character at a given index position in a string? The String class doesn't seem to have any methods to do this.

If I have a string "HELLO" I want the output to be this

["ELLO", "HLLO", "HELO", "HELO", "HELL"]

I do that using

d = Array.new(c.length){|i| c.slice(0, i)+c.slice(i+1, c.length)}

I dont know if using slice! will work here, because it will modify the original string, right?

#0

Won't Str.slice! do it? From ruby-doc.org:

str.slice!(fixnum) => fixnum or nil [...]

 Deletes the specified portion from str, and returns the portion deleted.

#1

If you're using Ruby 1.8, you can use delete_at (mixed in from Enumerable), otherwise in 1.9 you can use slice!.

Example:

mystring = "hello"
mystring.slice!(1)  # mystring is now "hllo"
# now do something with mystring

#2

$ 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

To avoid needing to monkey patch String you can make use of tap:

"abc".tap {|s| s.slice!(2) }
=> "ab"

If you need to leave your original string unaltered, make use of dup, eg. abc.dup.tap.

#4

I did something like this

c.slice(0, i)+c.slice(i+1, c.length)

Where c is the string and i is the index position I want to delete. Is there a better way?

推荐文章

在Python中在脚本(文件)开头添加文本的简单方法

在Python中在脚本(文件)开头添加文本的简单方法

推荐文章

如何关闭与MongoDB服务器的所有连接

如何关闭与MongoDB服务器的所有连接

推荐文章

使用相同模式查询多个表时消除代码重复

使用相同模式查询多个表时消除代码重复

推荐文章

在数据库中保存时出现编码错误

在数据库中保存时出现编码错误

推荐文章

匹配简单域的正则表达式

匹配简单域的正则表达式

推荐文章

@合成IBOutlet(UIScrollView)不工作

@合成IBOutlet(UIScrollView)不工作

推荐文章

需要htaccess重定向帮助

需要htaccess重定向帮助

推荐文章

使用PathModifier或MoveYModifier模拟精灵跳跃

使用PathModifier或MoveYModifier模拟精灵跳跃

推荐文章

从PL/SQL块运行脚本

从PL/SQL块运行脚本

推荐文章

ColdFusion客户端变量与会话变量

ColdFusion客户端变量与会话变量

推荐文章

是否可以减少使用ScriptingBridge的MacRuby脚本的启动时间?

是否可以减少使用ScriptingBridge的MacRuby脚本的启动时间?

推荐文章

正确分配/取消分配UINavigationControllerDelagate

正确分配/取消分配UINavigationControllerDelagate

推荐文章

在jquerymobile中为标签和值设置样式的推荐方法是什么?

在jquerymobile中为标签和值设置样式的推荐方法是什么?

推荐文章

如何将Json传递的日期值赋给Java日期对象

如何将Json传递的日期值赋给Java日期对象

推荐文章

模拟EF调用时出错

模拟EF调用时出错

推荐文章

不能用python运行doxygen

不能用python运行doxygen