Вы можете использовать символ @
перед строкой
, чтобы сформировать буквальный строковый литерал :
string query = @"SELECT foo, bar
FROM table
WHERE id = 42";
У вас также нет для экранирования специальных символов при использовании этого метода, за исключением двойных кавычек, как показано в ответе Джона Скита.
Одна возможность:
String imgRegex = "<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>";
- это возможность (при совпадении без учета регистра). Это немного беспорядок и намеренно игнорирует случай, когда кавычки не используются. Чтобы представить это, не беспокоясь о побегах строк:
<img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*>
Это соответствует: помощники, от первого лица их использования в ваших собственных приложениях, это факт что только ОДИН помощник класса для данного class может быть в области видимости в любое время ". ... "То есть, если у вас есть два помощника по объему будет признан только ОДИН компилятором. Вы не получите ничего предупреждения или даже намеки на любые другие s не только безвреден, но, вероятно, улучшает читаемость везде, где вы видите строку - но в других местах это может не требоваться, и в этом случае вам либо нужно не использовать многострочный буквальный строковый литерал для начать с или удалить их из результирующей строки.
Единственный способ экранирования состоит в том, что если вы хотите использовать двойные кавычки, вам нужно добавить дополнительный символ двойной кавычки:
string quote = @"Jon said, ""This will work,"" - and it did!";
One other gotcha to watch for is the use of string literals in string.Format. In that case you need to escape curly braces/brackets '{' and '}'.
// this would give a format exception
string.Format(@"<script> function test(x)
{ return x * {0} } </script>", aMagicValue)
// this contrived example would work
string.Format(@"<script> function test(x)
{{ return x * {0} }} </script>", aMagicValue)