Позволяет ли метод .NET String.Format размещать строку в фиксированной позиции в пределах строки фиксированной длины.
"Строка идет сюда" "Строка идет сюда" "Строка идет сюда"
Как это сделать с помощью .NET?
Редактировать - я пробовал Format / PadLeft / PadRight до смерти. Они не работают. Я не знаю почему. Я написал свою собственную функцию для этого.
Редактировать - я допустил ошибку и использовал двоеточие вместо запятой в спецификаторе формата. Должно быть "{0,20}".
Спасибо за все отличные и правильные ответы.
Ответы:
Это даст вам именно те строки, которые вы просили:
источник
,
вместо того,:
как во всех других случаях использования форматирования?Первый и последний, по крайней мере, возможны с использованием следующего синтаксиса:
источник
Начиная с Visual Studio 2015, вы также можете делать это с помощью Interpolated Strings (это трюк с компилятором, поэтому не имеет значения, на какую версию .net framework вы нацелены).
источник
Вы были показаны
PadLeft
иPadRight
. Это заполнит недостающееPadCenter
.Примечание для себя: не забудьте обновить свое резюме: «Однажды я даже исправил код Джоэла Кехорна!» ;-D -Serge
источник
попробуй это:
для центра получите длину строки и сделайте padleft и padright с необходимыми символами
источник
String.Format("{0,-length}", something)
не компилируются.Спасибо за обсуждение, этот метод также работает (VB):
Вот версия C #:
Чтобы помочь пониманию, используется целочисленная переменная firstpad . s.PadLeft (firstpad) применяет (правильное количество) первые пробелы. Крайний правый PadRight (requiredLength) имеет нижнюю привязку, заканчивающуюся применением конечных пробелов.
источник
Вот версия VB.NET, которую я создал, вдохновленный ответом Джоэла Кехорна, правкой Оливера и комментарием Шонмартина:
Это устанавливается как расширение строки внутри публичного модуля (способ, которым вы делаете расширения в VB.NET, немного отличается от C #). Мое небольшое изменение заключается в том, что он обрабатывает пустую строку как пустую строку и дополняет пустую строку значением ширины (соответствует моим конкретным потребностям). Надеюсь, это легко конвертируется в C # для всех, кому это нужно. Если есть лучший способ ссылаться на ответы, правки и комментарии, которые я упомянул выше, что вдохновило меня на мой пост, пожалуйста, дайте мне знать, и я сделаю это - я относительно новичок в публикации и не могу понять оставить комментарий (возможно, еще не достаточно представителей).
источник
Я разместил статью CodeProject, которая может быть тем, что вы хотите.
См. AC # way для косвенного форматирования ширины и стиля.
По сути, это метод FormatEx, который действует как String.Format, за исключением того, что он допускает модификатор центрированного выравнивания.
Означает центрирование значения varArgs [0] в поле шириной 10 символов, наклоняется вправо, если требуется дополнительное пространство для заполнения.
Означает центрирование значения varArgs [0] в поле шириной 10 символов, наклон влево, если требуется дополнительное пространство для заполнения.
Редактировать: Внутренне, это комбинация PadCenter Джоэла с некоторым анализом для реструктуризации формата и varArgs для вызова String.Format, который делает то, что вы хотите.
-Jesse
источник
кажется, что вы хотите что-то вроде этого, которое поместит вашу строку в фиксированную точку в строку постоянной длины:
обратите внимание, что это будет иметь проблемы, если mystring.length + leftbuffer превышает totallength
источник
источник