Специальные символы си шарп

Дословный текст — @ в переменных, атрибутах и строковых литералах

Специальный символ @ является буквальным идентификатором. Его можно использовать следующими способами:

    Чтобы указать, что строковый литерал следует интерпретировать буквально. Символ @ в этом случае определяет буквальный строковый литерал. Простые escape-последовательности (например, «\\» для обратной косой черты), шестнадцатеричные escape-последовательности (например, «\x0041» для прописной буквы A) и escape-последовательности Юникода (например, «\u0041» для прописной буквы A) интерпретируются буквально. Только escape-последовательность кавычек ( «» ) не интерпретируется буквально; она создает одну двойную кавычку. Кроме того, в случае с интерполированными строковыми скобками escape-последовательности ( > ) не интерпретируются буквально; они создают одинарные символы фигурных скобок. В следующем примере определяются два идентичных пути к файлам: один с помощью обычного строкового литерала, а другой — с помощью буквального строкового литерала. Это один из наиболее распространенных способов использования буквальных строковых литералов.

string filename1 = @"c:\documents\files\u0066.txt"; string filename2 = "c:\\documents\\files\\u0066.txt"; Console.WriteLine(filename1); Console.WriteLine(filename2); // The example displays the following output: // c:\documents\files\u0066.txt // c:\documents\files\u0066.txt 

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

string s1 = "He said, \"This is the last \u0063hance\x0021\""; string s2 = @"He said, ""This is the last \u0063hance\x0021"""; Console.WriteLine(s1); Console.WriteLine(s2); // The example displays the following output: // He said, "This is the last chance!" // He said, "This is the last \u0063hance\x0021" 
string[] @for = < "John", "James", "Joan", "Jamie" >; for (int ctr = 0; ctr < @for.Length; ctr++) < Console.WriteLine($"Here is your gift, !"); > // The example displays the following output: // Here is your gift, John! // Here is your gift, James! // Here is your gift, Joan! // Here is your gift, Jamie! 
using System; [AttributeUsage(AttributeTargets.Class)] public class Info : Attribute < private string information; public Info(string info) < information = info; >> [AttributeUsage(AttributeTargets.Method)] public class InfoAttribute : Attribute < private string information; public InfoAttribute(string info) < information = info; >> [Info("A simple executable.")] // Generates compiler error CS1614. Ambiguous Info and InfoAttribute. // Prepend '@' to select 'Info' ([@Info("A simple executable.")]). Specify the full name 'InfoAttribute' to select it. public class Example < [InfoAttribute("The entry point.")] public static void Main() < >> 

См. также раздел

Источник

Читайте также:  Open server configuration php

Escape-знаки в регулярных выражениях

Обратная косая черта (\) в регулярном выражении имеет одно из указанных ниже значений.

Escape-символы распознаются в шаблонах регулярных выражений, но не в шаблонах замены.

Escape-знаки в NET

В таблице ниже перечислены escape-последовательности, поддерживаемые регулярными выражениями в .NET.

Пример

В приведенном ниже примере показано использование escape-последовательностей в регулярном выражении. В нем анализируется строка, содержащая названия крупнейших городов мира и их население в 2009 г. Название каждого города отделяется от его населения табуляции ( \t ) или вертикальной полосой (| или \u007c ). Отдельные города и их население разделяются символами возврата каретки и перевода строки.

using System; using System.Text.RegularExpressions; public class Example < public static void Main() < string delimited = @"\G(.+)[\t\u007c](.+)\r?\n"; string input = "Mumbai, India|13,922,125\t\n" + "Shanghai, China\t13,831,900\n" + "Karachi, Pakistan|12,991,000\n" + "Delhi, India\t12,259,230\n" + "Istanbul, Türkiye|11,372,613\n"; Console.WriteLine("Population of the World's Largest Cities, 2009"); Console.WriteLine(); Console.WriteLine("", "City", "Population"); Console.WriteLine(); foreach (Match match in Regex.Matches(input, delimited)) Console.WriteLine(" ", match.Groups[1].Value, match.Groups[2].Value); > > // The example displays the following output: // Population of the World's Largest Cities, 2009 // // City Population // // Mumbai, India 13,922,125 // Shanghai, China 13,831,900 // Karachi, Pakistan 12,991,000 // Delhi, India 12,259,230 // Istanbul, Türkiye 11,372,613 
Imports System.Text.RegularExpressions Module Example Public Sub Main() Dim delimited As String = "\G(.+)[\t\u007c](.+)\r?\n" Dim input As String = "Mumbai, India|13,922,125" + vbCrLf + _ "Shanghai, China" + vbTab + "13,831,900" + vbCrLf + _ "Karachi, Pakistan|12,991,000" + vbCrLf + _ "Delhi, India" + vbTab + "12,259,230" + vbCrLf + _ "Istanbul, Türkiye|11,372,613" + vbCrLf Console.WriteLine("Population of the World's Largest Cities, 2009") Console.WriteLine() Console.WriteLine(" ", "City", "Population") Console.WriteLine() For Each match As Match In Regex.Matches(input, delimited) Console.WriteLine(" ", match.Groups(1).Value, _ match.Groups(2).Value) Next End Sub End Module ' The example displays the following output: ' Population of the World's Largest Cities, 2009 ' ' City Population ' ' Mumbai, India 13,922,125 ' Shanghai, China 13,831,900 ' Karachi, Pakistan 12,991,000 ' Delhi, India 12,259,230 ' Istanbul, Türkiye 11,372,613 

Возможные интерпретации регулярного выражения \G(.+)[\t\u007c](.+)\r?\n показаны в следующей таблице.

Шаблон Описание
\G Начать сопоставление там, где закончилось последнее соответствие.
(.+) Сопоставление любого символа один или более раз. Это первая группа записи.
[\t\u007c] Совпадение с табуляции ( \t ) или вертикальной полосой (|).
(.+) Сопоставление любого символа один или более раз. Это вторая группа записи.
\r?\n Соответствует отсутствию или одному вхождению символа возврата каретки, за которым следует новая строка.

См. также

Источник

Оцените статью