2016-06-05 14 views
-3

Zum Beispiel:Löschen Sie das Vorkommen eines Wortes aus einer Zeichenfolge in Ruby selektiv?

str = "The quick the brown the fox the jumped the over the lazy the dog." 

Hier würde ich gerne wissen, wie die folgenden zwei Dinge zu tun:

  1. Löschen der dritte nur „die“
  2. Löschen jedes dritte " die "
+0

Sie zählen nicht ' "The" 'as' "the" ', oder? – sawa

+0

Sie löschen nicht die zusätzlichen Leerzeichen, die übrig sind, wenn Sie '" das "' löschen, richtig? – sawa

+0

@sawa nein das "the" ist case insensitive. Ich habe über '.gub (/ the/i," ") nachgedacht, aber ich weiß nicht, wie ich es für die n-te Instanz machen soll. 'gsub' ersetzt alle Instanzen von" the ". – Arif

Antwort

1

Wie das OP angefordert hat, den folgenden Code:

  • zählt nicht "The" als "the".
  • löscht nicht die zusätzlichen Leerzeichen, die übrig sind, wenn "the" gelöscht wird.

Mit dieser regex:

re = /((?:\bthe\b.*?){2})\bthe\b/ 

löschen nur die dritte "the":

str.sub(re, '\1') 
# => "The quick the brown the fox jumped the over the lazy the dog." 

jedes löschen dritte "the":

str.gsub(re, '\1') 
# => "The quick the brown the fox jumped the over the lazy dog." 
Verwandte Themen