използвайки променливи в gsub

Имам променлива address, която засега е дълъг низ, съдържащ някаква ненужна информация, напр.: "Aboriginal Relations 11th Floor Commerce Place 10155 102 Street Edmonton AB T5J 4G8 Phone 780 427-9658 Fax 780 644-4939 Email [email protected]"

Aboriginal Relations е в променлива, наречена title, и аз се опитвам да извикам address.gsub!(title,''), но тя връща оригиналния низ.

Опитах също address.gsub!(/#{title}/,'') и address.gsub!("#{title}",''), но и те не работят. Някакви идеи?

Съжалявам, правописната грешка възникна, когато го написах в препълването на стека, ето кода и изхода, копирани и поставени:

(това е в рамките на цикъл, така че ще има множество изходи)

p title
address.gsub!(title,'')
p address

изход

"Aboriginal Relations "
"Aboriginal Relations 11th Floor Commerce Place 10155 102 Street Edmonton AB T5J 4G8 Phone         780 427-9658 Fax 780 644-4939 Email [email protected]"
"Aboriginal Tourism Advisory Council "
"Aboriginal Tourism Advisory Council 5th Floor Terrace Building 9515 107 Street Edmonton AB T5K 2C3 Phone 780 427-9687 Fax 780 422-7235 Email [email protected]"
"Acadia Foundation "
"Acadia Foundation PO Box 96 Oyen AB T0J 2J0 Phone 403 664-3384 Fax 403 664-3316 Email [email protected]"
"Access Advisory Council "
"Access Advisory Council 12th Floor Centre West Building 10035 108 Street Edmonton AB T5J 3E1 Phone 780 427-2805 Fax 780 422-3204 Email [email protected]"
"ACCM Benevolent Association "
"ACCM Benevolent Association Suite 100 9403 95 Avenue Edmonton AB T6C 4M7 Phone 780 468-4648 Fax 780 468-4648 Email [email protected]"
"Acme Municipal Library "
"Acme Municipal Library PO Box 326 Acme AB T0M 0A0 Phone 403 546-3845 Fax 403 546-2248 Email [email protected]"

по същия начин, ако опитам address.match(/#{title}/), получавам нула.


person agarrow    schedule 05.07.2013    source източник
comment
Тъй като празното място е основната причина, помислете дали да го добавите като таг (и може би да го включите в заглавието).   -  person Kelvin    schedule 06.07.2013


Отговори (2)


Предполагам, че използвате ruby ​​1.9 или по-нова версия. Възможно е празното пространство в края да е непрекъсваем интервал:

p "Relations\u00a0"  # looks like a trailing space, but strip won't remove it

за да се отървете от него:

"Relations\u00a0".gsub!(/^\u00a0|\u00a0$/, '')  # => "Relations"

По-общо решение за всички празни пространства в Unicode:

"Relations\u00a0".gsub!(/^[[:space:]]|[[:space:]]$/, '')  # => "Relations"

За да видите какъв е героят във вашия случай:

title[-1].ord  # => 160 (example only)
'%x' % title[-1].ord  # => "a0" (hex equivalent; example only)
person Kelvin    schedule 05.07.2013
comment
Използвах генеричното решение, работи прекрасно. Благодаря ти! :) - person agarrow; 06.07.2013

title = title[0..-2] изглежда го реши. по някаква причина strip и chomp няма да работят.

person agarrow    schedule 05.07.2013
comment
Моля, публикувайте как сте използвали strip и chomp. Присвоихте ли върнатите им стойности обратно на оригиналната променлива? Като алтернатива можете да опитате strip! и chomp!. - person Kelvin; 05.07.2013
comment
Не препоръчвам сляпо премахване на последния знак. Вижте отговора ми защо strip и chomp може да не работят. - person Kelvin; 05.07.2013