[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
Починаючи з C# 11, можна використовувати необроблені рядкові літерали для спрощення створення рядків, які є багаторядковими, або використовувати будь-які символи, які потребують escape-послідовностей.
Багато що з того, що поміщається в рядкові літерали, є своєрідним “кодом” – не тільки текст програми, а й дані JSON і XML, HTML, регулярні вирази, SQL-запити тощо. Дуже неприємно, коли багато спеціальних символів, які трапляються в такому тексті, мають особливе значення в строкових літералах C#! Як приклад можна навести і “, до яких в інтерпольованих рядках приєднуються { і }. Необхідність екранувати всі ці символи – ускладнює процес розробки.
Необроблений строковий літерал розмежовується як мінімум трьома подвійними лапками:
1 2 3 4 5 |
static void Main() { string message = """Hello "content" """; Console.WriteLine(message);//Hello "content" } |
Якщо необхідно використовувати 3 лапки як частину вмісту, використовуйте 4 для позначення початку і кінця рядка:
1 2 |
string message = """"Hello "content" - """ """"; Console.WriteLine(message);//Hello "content" - """ |
Додаючи в рядок C# або Html верстку, так само виникали проблеми форматування тексту, спробуємо виконати вставку із застосуванням необроблених строкових літералів:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
static void Main() { string htmlCode = """ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>Hello</h1> </body> </html> """; Console.WriteLine(htmlCode); } |
Хочу так само звернути увагу, що починаючи з C# 11, під час вставки багаторівневого тексту у звичайний рядок відбувається автоматичне перетворення тексту в один рядок із додаванням символів керуючої послідовності:
1 |
string htmlCode = "<!DOCTYPE html>rn <html lang="en">rn <head>rn <meta charset="UTF-8">rn <meta http-equiv="X-UA-Compatible" content="IE=edge">rn <meta name="viewport" content="width=device-width, initial-scale=1.0">rn <title>Document</title>rn </head>rn <body>rn <h1>Hello</h1>rn </body>rn </html>rn"; |
Під час використання кількох рядків тексту, багаторядковий необроблений строковий літерал вимагає відкриття та закривання послідовності лапок у власному рядку:
1 2 3 |
string htmlCode = """ Hello world """; |
При створенні тексту, що містить символи, які потребують escape-послідовностей під час використання строкових літералів із лапками або строкових літералів, слід використовувати саме необроблені строкові літерали, оскільки вони впораються з цим завданням краще за будь-який інший інструмент!
Розглянемо на прикладі такої Json структури файлу:
1 2 3 4 5 6 7 8 9 |
{ "Date": "2019-08-01", "TemperatureCelsius": 25, "Summary": "Hot", "DatesAvailable": [ "2019-08-01", "2019-08-02" ] } |
У коді C#, визначимо 3 види рядка: звичайний, вербальний і необроблений:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ string defaultStr = "{rn "Date": "2019-08-01",rn "TemperatureCelsius": 25,rn "Summary": "Hot",rn "DatesAvailable": [rn "2019-08-01",rn "2019-08-02"rn ]rn}"; string verbatimStr = @"{ ""Date"": ""2019-08-01"", ""TemperatureCelsius"": 25, ""Summary"": ""Hot"", ""DatesAvailable"": [ ""2019-08-01"", ""2019-08-02"" ] }"; string rawStringStr = """ { "Date": "2019-08-01", "TemperatureCelsius": 25, "Summary": "Hot", "DatesAvailable": [ "2019-08-01", "2019-08-02" ] } """; } |
Висновок ідентичний, а реалізація і сприйняття з коду відрізняється.
Ви хочете навчитися писати код мовою програмування C#?
Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.
Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах