Regex / Удалить слэш из строки в рубине - PullRequest
4 голосов
/ 01 апреля 2012

Заранее спасибо ...

У меня возникли проблемы с регулярными выражениями в ruby ​​или другим способом найти способ удалить косую черту из строки.Вот как выглядит моя строка:

string = "word \/ word"

Я пытаюсь удалить как обратную, так и косую черту;Я хочу этот результат:

string = "word  word"

Я думаю, что я что-то упустил с escape-символами, или кто знает что!

Я пробовал это:

string.gsub(/\//, "")

, которыйудалит обратную косую черту, но оставит косую черту.Я пробовал вариации с escape-персонажами повсюду и в местах, которые даже не имеют смысла!

Я ужасно разбираюсь в регулярных выражениях и очень разочарован работой со строками в целом, и я просто в растерянности.Я уверен, что это что-то очевидное, но чего мне не хватает?

Ответы [ 3 ]

4 голосов
/ 01 апреля 2012

Причина в том, что оба / и \ не являются действительными символами в регулярном выражении сами по себе.Таким образом, им нужно сбежать, поставив перед ними \.Таким образом, \ становится \\, а / становится \/.Поместив их вместе в другой набор слешей для создания литерала Regexp, мы получим:

string.gsub(/\\\//, "")

Еще один способ написать это:

string.gsub(/#{Regexp.escape('\/')}/, "")

Вам следует проверить Rubular на хорошийспособ разработки строк регулярных выражений.

http://rubular.com/r/ml1a9Egv4B

3 голосов
/ 01 апреля 2012
str = "word \/ word"
p str.delete('\/') #=>"word  word"
# to get rid of the double spaces:
p str.delete('\/').squeeze(' ') #=>"word word"
0 голосов
/ 01 апреля 2012

Он на самом деле делает то, что вы хотите, но не по тем причинам, о которых вы думаете:

string = "word \/ word"
# => "word / word"
string.gsub(/\//, "")
# => "word  word"

Примечание: вам нужен gsub!если вы хотите заменить содержимое строки

...