2017-06-12 3 views
-2

In Rubin, sagen, ich habe diese Zeichenfolge: "abc''xyz''"Wie löscht man einen Apostroph, wo er in einer Zeichenkette dupliziert wird?

(das sind 2 einfache Anführungszeichen nach abc und xyz)

Nun, ich versuche, einen Weg zu finden, es in diese Zeichenfolge zu machen: "abc'xyz'"

Ich möchte nur einen Apostroph aus dieser Zeichenfolge an Stellen löschen, an denen zwei Apostrophe Rücken an Rücken stehen. Danke im Voraus.

+0

Was haben Sie versucht, bevor er fragte? –

Antwort

4

können Sie String#squeeze verwenden:

"abc''xyz''".squeeze("'") 
#=> "abc'xyz'" 

Diese Methode entfernt Duplikate von einem bestimmten Charakter, wenn sie unmittelbar nach einander sind. Es wird n Zeichen in Folge auf nur eine reduzieren.

Zum Beispiel, wenn Sie die Zeichenfolge " '''''' " hatte, drückte sie zurückkehren würde folgendes:

" '''''' ".squeeze("'") 
#=> " ' " 
+0

Großartig, danke! – athill16

+0

Das ist sehr praktisch. –

+0

Hi @ athill16 Wenn diese oder eine Antwort Ihre Frage gelöst hat, beachten Sie bitte [akzeptieren] (https://meta.stackexchange.com/q/5234/179419), indem Sie auf das Häkchen klicken. Dies zeigt der breiteren Gemeinschaft, dass Sie eine Lösung gefunden haben und sowohl dem Antworter als auch Ihnen einen guten Ruf verschaffen. Es besteht keine Verpflichtung, dies zu tun. – Piccolo

-1

String#squeeze ist das, was Sie brauchen, und gsub ist wirklich eine schlechte Idee.

Benchmark.bm do |bm| 

    bm.report("squeeze") do 
    iterations.times do 
     "e''eee''e'e''''e".squeeze("'") 
    end 
    end 

    bm.report("gsub") do 
    iterations.times do 
     "e''eee''e'e''''e".gsub(/\'+/, "'") 
    end 
    end 
end 

und Ergebnisse:

 user  system  total  real 
squeeze 6.109000 0.000000 6.109000 ( 6.110040) 
gsub 22.454000 0.000000 22.454000 (22.469204) 
Verwandte Themen