2015-01-27 7 views
0

Я использую VB.NET и String.Format.Как работает эта строка кода VB.NET?

Введенная ниже строка кода заполняет s пробелом 20 символов. Проблема в том, что я не знаю, как это работает и не может найти объяснения. Ссылка: MSDN String.Format Method.

Dim s As String = String.Format("{0, 20}", String.Empty) 

Это дает мне результат, в котором я нуждаюсь, строка, заполненная 20 пробелами, но что такое «0»? Если я изменил это на любое другое число, это создаст ошибку.

И я не вижу, где/как он задает пробел?

+3

Возможно, лучшее объяснение здесь [Composite Форматирование] (HTTPS : //msdn.microsoft.com/en-us/library/txafckwd (v = vs.110) .aspx) – Steve

+1

@Suzy В [упомянутой странице] (https://msdn.microsoft.com/en-us/ библиотека/System.String.Format (v = vs.110) .aspx # FormatItem). – Ripple

ответ

4

Формат specififer {0, 20} указывает на то, что он будет поместить объект string.Empty как элемент {0} в конце пустой строки 20 символов. Под этим я подразумеваю, что ваш элемент будет использоваться для заполнения правой части 20-символьной строки, а остаток будет дополнен. Поскольку вы используете string.Empty, вы получаете совершенно пустую строку. Попробуйте добавить z и изменить число на отрицательное число.

string.Format("{0, -10}", "z"); 

Это должно дать вам 10-значную строку, начинающуюся с z и заполненную пробелами. Это поведение по умолчанию для string.Format, и оно наиболее часто используется при форматировании пользовательских чисел. Пространство не обязательно должно быть включено как часть команды, потому что это считается ожидаемым из-за того, что ваш спецификатор указал, что вам нужна строка результата из 20 символов. Пространство кажется наиболее логичным вставленным символом по умолчанию.

Если вы используете сложную строку типа:

string.Format("{0, 10}", "abc"); 

Вы все равно должны получить строку 10 символов, но это будет выглядеть

"  abc" 
1

0 в первом параметре - это индекс аргумента.

Подпись этого метода: String.Format(string format, object[] params).

So "{0, 20}" - это строка, которая должна быть отформатирована, и все остальное превращается в массив объектов.

1

нуль является индекс параметра, который вы отправляете в вашем случае String.Empty