что-то вроде тройной кавычки питона в F # (или C #)? - PullRequest
12 голосов
/ 16 мая 2010

Я хочу назначить код XML в строковую переменную. Я могу сделать это без экранирования одинарных или двойных кавычек, используя тройные кавычки в Python. Есть ли аналогичный способ сделать это в F # или C #?

Ответы [ 4 ]

14 голосов
/ 09 ноября 2012

F # 3.0 поддерживает строки в тройных кавычках. См. Сообщение в блоге команды Visual Studio F # о возможностях 3.0.

Спецификация F # 3.0 Строки и символы В разделе конкретно упоминается сценарий XML:

Строка с тройными кавычками указывается с помощью трех кавычек ("" "), чтобы убедиться, что строка, включающая один или несколько экранированных Строки интерпретируются дословно. Например, строка в тройных кавычках может использоваться для встраивания блобов XML:

10 голосов
/ 16 мая 2010

Насколько я знаю, в C # / F # нет синтаксиса, соответствующего этому. Если вы используете @"str", вы должны заменить кавычку на две кавычки, а если вы просто используете "str", то вам нужно добавить обратную косую черту.

В любом случае существует кодировка ":

var str = @"allows
  multiline, but still need to encode "" as two chars";
var str = "need to use backslahs \" here";

Однако лучшее, что нужно сделать, когда вам нужно встроить большие строки (например, данные XML) в ваше приложение, - это, вероятно, использовать ресурсы .NET (или хранить данные в другом месте, в зависимости от вашего приложения). Встраивание больших строковых литералов в программу обычно не очень рекомендуется. Кроме того, был плагином для вставки XML в виде дерева, которое создает XElement объекты для C #, но я не уверен, существует ли он по-прежнему.

Хотя я лично проголосовал бы за добавление """ как известно из Python в F # - это очень полезно, особенно для интерактивных сценариев.

1 голос
/ 16 мая 2010

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

System.Console.WriteLine(@"Hello ""big"" world");

будет выводить

Hello "big" world

http://msdn.microsoft.com/en-us/library/362314fe.aspx

0 голосов
/ 16 мая 2010

В C # синтаксис: @"some string"

см. Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...