gsub # връща \# вместо #

Опитвам се да превърна "${variablename}" в "#{variablename}", за да има достъп до променливата в низа.

например, ако имам променлива foo = "bar", искам "${foo}".gsub("$", "#") да върне "bar", защото очаквам "#{foo}", което е "бар", но вместо това получавам "\#{foo}"

отворете irb и опитайте това

"${Hello}".gsub("$","#")

=> "\#{Здравей}"

Искам да е "#{Hello}"

Може ли някой да помогне?? Надявам се въпросът ми да е ясен..


person caseeker    schedule 10.01.2014    source източник
comment
Получаваш това, което искаш. Опитайте puts "${Hello}".gsub("$","#").   -  person falsetru    schedule 10.01.2014
comment
За да покажете допълнително, че не е gsub, оценете простите изрази "#hi" и прегледайте изхода. Това поведение е така, защото IRB ще покаже резултата от theResult.inspect< /a> ако може: Връща низ, съдържащ четимо за човека представяне на obj.   -  person user2864740    schedule 10.01.2014


Отговори (1)


Това е просто irb избягване на нещата за рендиране. Той вече прави точно това, което искате.

Въпреки това, просто генерирането на низа #{foo} няма да извърши интерполация на низ вместо вас. Низовете не се интерполират внезапно в секундата, когато съдържат #{}.

Трябва да преосмислите кода си, така че вашите стойности да се съхраняват в хеш, а не като локални променливи.

person meagar    schedule 10.01.2014