2015-03-18 1 views
0

В C# я могу писать обратную косую черту и другие специальные символы без экранирования с помощью @ перед строкой, но мне нужно избежать двойных кавычек.Строковый литерал без необходимости избегать обратной косой черты

C#

string foo = "The integer division operator in VisualBASIC is written \"a \\ b\""; 
string bar = @"The integer division operator in VisualBASIC is written \"a \ b\"" 

В Ruby, я мог бы использовать одинарные кавычки строковый литерал, но я хотел бы использовать это в связке с интерполяции строк, как "text #{value}". Есть ли эквивалент в Ruby до @ в C#?

+1

Вам нужно будет использовать '\\' для добавления, нет эквивалента в Rails – ediblecode

+0

Непонятно, что вы хотите. Строковый литерал с одной кавычкой в ​​Ruby по-прежнему требует, чтобы обратная косая черта была экранирована. – sawa

ответ

5

В Ruby существует несколько аналогичная вещь. Например.

foo = %Q(The integer division operator in VisualBASIC is written "a \\ b" and #{'interpolation' + ' works'}) 

Вы также можете интерполировать в него строки. Единственное предостережение - вам все равно придется избегать символа \.

НТН

2

Вы можете использовать Heredoc одинарные кавычки.

foo = <<'_' 
The integer division operator in VisualBASIC is written "a \ b"; 
_ 

Если вы хотите избавиться от символа новой строки в конце, а затем chomp его.

Обратите внимание, что это не работает со строковой интерполяцией. Если вы хотите вставить оцененные выражения в строку, вы можете использовать операцию % после создания строки.

foo = <<'_' 
text %{value} 
_ 

foo.chomp % {value: "foo"} 
+0

Вам все равно придется скрывать '\\' (обратную косую черту) AFAIK. –

+0

'foo = << _ Оператор целочисленного деления в VisualBASIC написан« a \\ b »; текст # {значение} _'. Проверьте двойную обратную косую черту. –

+1

Вы можете вызвать 'chomp' сразу после идентификатора открытия heredoc, то есть' foo = << '_'. Chomp ... ' – Stefan