从字符串中删除单个内部字符实例

时间:2016-06-05 12:12:59

标签: ruby string

我想从字符串中删除单个字词:

str = "I would like to remove THIS word but not THIS word"

我只想删除第一个'THIS',并给出结果:

str = "I would like to remove  word but not THIS word"

我在思考索引的内容:

word = 'THIS'
word.length # => 4
str.index(word) # => 23

有没有办法说,在第23个字符后删除4个字符?

我看到有很多方法可以删除前导和尾随字符,但不确定内部字符。 Gsub将删除该单词的所有实例,这不是我正在寻找的。

3 个答案:

答案 0 :(得分:6)

您可以使用sub,它只会影响第一个匹配事件。

str.sub!(word, '');

答案 1 :(得分:4)

要仅删除第一次出现的THIS,请执行:

str.sub!("THIS", "")

要删除第23个字符后的四个字符(即第24个字符),请执行以下操作:

str[24, 4] = ""

答案 2 :(得分:3)

str = "I would like to remove THIS word but not THIS word"
str.sub!(/\bTHIS\b/,'')
  #=> "I would like to remove  word but not THIS word" 

str = "THISTLE sounds like WHISTLE. I want to remove THIS word"
str.sub!(/\bTHIS\b/,'')
  # => "THISTLE sounds like WHISTLE. I want to remove  word"

,而

str.sub("THIS", '')
  #"TLE sounds like WHISTLE. I want to remove THIS word"
正则表达式中的

\b"word break"。 (搜索“锚点”。)