Что означают квадратные скобки {} при использовании в строках в VB.net?Где я могу найти детали? - PullRequest
3 голосов
/ 03 января 2012

У меня есть примерно такие скобки {} в VB.net.

Я вижу такой синтаксис в документации по MSDN и в руководствах по VB.net.

  Dim pattern As String = "(\d{3})-(\d{3}-\d{4})"
  Dim input As String = "212-555-6666 906-932-1111 415-222-3333 425-888-9999"
  Dim matches As MatchCollection = Regex.Matches(input, pattern)
  For Each match As Match In matches
     Console.Write("Area Code:        {0}", match.Groups(1).Value)
  Next 

печатает: Код города: 212 Код города: 906 Код города: 415 Код города: 425

это похоже на "this is a string {0}" , variable отпечатки "это строка" & valueOfVariable.ToString

Но у меня есть несколько вопросов о том, как это на самом деле работает:

  1. Предполагает ли VB.net автоматически, что фигурные скобки содержат строковый параметр, или это зависит от контекста. Я видел этот синтаксис только как часть Console.WriteLine (я погуглил специальные символы vb.net 4.0 без удачи)?
  2. Каковы правила того, когда и как вы можете назначать параметры в строку, подобную этой?
  3. Может кто-нибудь указать мне ссылку на MSDN? Как называется этот синтаксический / строковый трюк?

Ответы [ 3 ]

6 голосов
/ 03 января 2012

Это называется форматированием строки,

http://msdn.microsoft.com/en-us/library/system.string.format.aspx

Он будет принимать любые параметры и будет преобразовывать в свое текстовое представление на основе указанного форматирования, есть много способов контролировать, как форматировать данный объект (это может быть строка, число, дата, что угодно).

Все в .Net является производным от объекта, и у объекта есть метод ToString, который возвращает свое строковое представление. Поэтому, если число или что-либо еще передано в Format, этот метод вызовет ToString и будет использовать его строковое представление вместе с другими настройками.

В большинстве случаев этот метод будет использоваться некоторыми другими высокоуровневыми методами, такими как Console.WriteLine и т. Д., Но в конечном итоге все они будут одинаковыми.

Составное форматирование

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

Стандартные числовые форматы

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

Пользовательские числовые форматы

http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

Вам потребуется прочитать все связанные ссылки в MSDN, чтобы получить больше информации.

6 голосов
/ 03 января 2012

Они на самом деле не связаны, это зависит от контекста, как вы говорите.

В переменной pattern синтаксис регулярного выражения \d{3} означает ровно 3 вхождения цифры (0-9).

В Console.Write эта перегрузка внутренне передает строку в string.Format, где записи в фигурных скобках интерпретируются как заполнители для форматирования. Только когда они передаются string.Format (явно или неявно), они приобретают это особое значение.

0 голосов
/ 03 января 2012

«Шаблон» является частью «Регулярного выражения».

Смотрите здесь для начала: http://www.regular -expressions.info / dotnet.html

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