2016-04-02 16 views
0

Ich muss alle Sonderzeichen innerhalb einer Zeichenfolge mit ihrem Index ersetzen. Zum BeispielErsetzen Sonderzeichen mit Index

"[email protected]$all%special^characters^" 

sollte geworden:

"I1need6to9change16all20special28characters39" 

Der Index aller Sonderzeichen unterscheidet. Ich habe viele Links replacing all with single character, occurances of a character überprüft. Ich fand sehr ähnlichen Link, aber ich möchte nicht diese replace its index number übernehmen, da ich alle Sonderzeichen ersetzen muss.

Ich habe auch etwas zu tun, wie dies versucht:

str.gsub!(/[^0-9A-Za-z]/, '') 

Hier str ist mein Beispiel String. Da dies ersetzt alle Zeichen, aber mit Leerzeichen, und ich möchte den Index anstelle von Leerzeichen. Entweder alle die Sonderzeichen oder diese sieben

\/*[]:? 

Ich brauche diese sieben in erster Linie zu ersetzen, aber es wäre in Ordnung, wenn wir sie alle ersetzen.

Ich brauche einen einfacheren Weg.

Vielen Dank im Voraus.

+0

Was 'str' ist? ..... – sawa

+0

str ist die Zeichenkette ("I-need_to @ change $ all% special^characters ^"). – Manishh

Antwort

2

können Sie die globale Variable $` und die Blockform gsub verwenden:

irb> str = "[email protected]$all%special^characters^" 
=> "[email protected]$all%special^characters^" 
irb> str.gsub(/[^0-9A-Za-z]/) { $`.length } 
=> "I1need6to9change16all20special28characters39" 
Verwandte Themen