Дана строка "5 900 000"
Strip/заменить пробелы в строке
Я хочу, чтобы избавиться от пространств с помощью gsub
со следующей схемой:
gsub(/\s/, '')
, но это не похоже на работу. Также не:
gsub(' ', '')
Дана строка "5 900 000"
Strip/заменить пробелы в строке
Я хочу, чтобы избавиться от пространств с помощью gsub
со следующей схемой:
gsub(/\s/, '')
, но это не похоже на работу. Также не:
gsub(' ', '')
>> "5 900 00".gsub(' ','')
=> "590000"
Является ли это на самом деле строка? !
.gsub возвращает значение, если вы хотите изменить переменную попробовать .gsub (»», „“)
Если вы хотите сделать замену на месте, вы должны использовать:
str.gsub!(/\s/,'')
в качестве альтернативы, GSUB возвращает строку с заменами
str2 = str.gsub(/\s/,'')
EDIT: Исходя из вашего ответа, похоже, у вас есть некоторые unprintabl e символов, встроенных в строку, а не пробелы. Использование /\D/ в качестве строки поиска может быть тем, что вы хотите. Следующее будет соответствовать любому несимметричному символу и заменить его пустой строкой.
str.gsub!(/\D/,'')
print "5 900 000".gsub(/\s/, '')
работает для меня.
Вы влияете на результат на переменную?
"5 900 000".gsub(/\s/,'')
работает отлично
Из того, что я вижу, Вы писали GSUB точка (Foo, бар), где он должен быть string.gsub (Foo, Bar)
вы имеете в виду
с восклицательным знаком?
Самое смешное, что когда я печатаю строку я получаю
697 \ 302 \ 240000
но то, что попадает в базе данных: 697 000. Я знаю, что модели я давшие должны работать а также ваши предложения, но это, кажется, немного «изворотливый» случай :-)
в этом случае попробуйте str.gsub! (/ \ D /, '') – rampion
Просто для пинков: вам даже нужно регулярное выражение здесь? String#tr
должен сделать трюк только штрафом:
telemachus ~ $ irb
>> "500 500 12".tr(' ', '')
=> "50050012"
>> "500 500 12".tr!(' ', '')
=> "50050012"
Как gsub
и gsub!
, метод !
делает изменения в месте, а не возвращая результат изменений. Я не знаю, чего ты хочешь здесь.
В таком случае tr
кажется более простым для меня. Я не ищу оптимизацию, но хорошо помнить, что существует множество строковых методов других, чем регулярных выражений.
Не уверен, что 'tr' является хорошим вариант? 'Переводит str на место, используя те же правила, что и String # tr. Возвращает str или nil, если никаких изменений не было. 'Так что если строка ничего не соответствует, она вернет nil. – 23inhouse
@ 23inhouse Я не уверен, что вы имеете в виду. Для первого 'tr', я думаю, вы имеете в виду' tr! '. (Вся разница между 'tr' и' tr! 'Заключается в том, что' tr' делает ** не ** делает изменения на месте. Что касается возврата 'nil', то это зависит от большего приложения. не дал нам достаточно, чтобы продолжить. Это может быть хорошо или это может быть ошибкой. – Telemachus
Правда, я думал, что стоит упомянуть. – 23inhouse
Я предлагаю сделать str.gsub!(/\s+/, '')
по соображениям эффективности.
Попробуйте надеюсь, что это будет полезно:
2.2.1 :001> str= " Jai Kumar rajput ";
# " Jai Kumar rajput "
2.2.1 :001> str.squish.downcase.tr(" ","");
# "JaiKumarRajput"
Не уверен, что если бы это было намеренным, но не должно быть период после GSUB. "gsub ('', '')" not "gsub. ('', '')" –