использование переменных в gsub

Вопрос:

У меня есть переменный address который на данный момент является длинной строкой, содержащей некоторую ненужную информацию, например: "Aboriginal Relations 11th Floor Commerce Place 10155 102 Street Edmonton AB T5J 4G8 Phone 780 427-9658 Fax 780 644-4939 Email gerry.kushlyk@gov.ab.ca"

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 gerry.kushlyk@gov.ab.ca"
"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 foip.fintprccs@gov.ab.ca"
"Acadia Foundation "
"Acadia Foundation PO Box 96 Oyen AB T0J 2J0 Phone 403 664-3384 Fax 403 664-3316 Email acadiafoundation@telus.net"
"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 barb.joyner@gov.ab.ca"
"ACCM Benevolent Association "
"ACCM Benevolent Association Suite 100 9403 95 Avenue Edmonton AB T6C 4M7 Phone 780 468-4648 Fax 780 468-4648 Email accmmanor@shaw.ca"
"Acme Municipal Library "
"Acme Municipal Library PO Box 326 Acme AB T0M 0A0 Phone 403 546-3845 Fax 403 546-2248 Email aamlibrary@marigold.ab.ca"

Аналогично, если я попробую address.match(/#{title}/) я получаю нуль.

Лучший ответ:

Я предполагаю, что вы используете 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)

Ответ №1

title= title[0..-2] казалось, решил его. по какой-то причине strip и chomp не будут работать.

Оцените статью
TechArks.Ru
Добавить комментарий