2013-07-05 5 views
1

У меня есть переменная 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]"использование переменных в GSUB

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]arigold.ab.ca" 

также, если я пытаюсь address.match(/#{title}/) я получаю ноль.

+0

Поскольку пробел был основной причиной, подумайте над тем, чтобы добавить это как тег (и, возможно, включить его в заголовок). – Kelvin

ответ

1

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

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

, чтобы избавиться от него:

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

Более общее решение для всех юникода пробельных:

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

Чтобы увидеть, что характерный в вашем случае:

title[-1].ord # => 160 (example only) 
'%x' % title[-1].ord # => "a0" (hex equivalent; example only) 
+0

Я использовал общее решение, прекрасно работал. Спасибо! :) – agarrow

0

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

+0

Пожалуйста, напишите, как вы использовали 'strip' и' chomp'. Вы присвоили возвращаемые значения исходной переменной? Кроме того, вы можете попробовать 'strip!' И 'chomp!'. – Kelvin

+0

Я не рекомендую вслепую удалить последний символ. См. Мой ответ, почему 'strip' и' chomp' могут не работать. – Kelvin

Смежные вопросы