Вот версия VB.NET, которую я создал, вдохновленный ответом Джоэла Кехорна, правкой Оливера и комментарием Шонмартина:
<Extension()>
Public Function PadCenter(ByVal [string] As String, ByVal width As Integer, ByVal c As Char) As String
If [string] Is Nothing Then [string] = String.Empty
If (width <= [string].Length) Then Return [string]
Dim padding = width - [string].Length
Return [string].PadLeft([string].Length + (padding \ 2), c).PadRight(width, c)
End Function
<Extension()>
Public Function PadCenter(ByVal [string] As String, ByVal width As Integer) As String
If [string] Is Nothing Then [string] = String.Empty
If (width <= [string].Length) Then Return [string]
Dim padding = width - [string].Length
Return [string].PadLeft([string].Length + (padding \ 2)).PadRight(width)
End Function
Это устанавливается как расширение строки внутри публичного модуля (способ, которым вы делаете расширения в VB.NET, немного отличается от C #). Мое небольшое изменение заключается в том, что он обрабатывает пустую строку как пустую строку и дополняет пустую строку значением ширины (соответствует моим конкретным потребностям). Надеюсь, это легко конвертируется в C # для всех, кому это нужно. Если есть лучший способ ссылаться на ответы, правки и комментарии, которые я упомянул выше, что вдохновило меня на мой пост, пожалуйста, дайте мне знать, и я сделаю это - я относительно новичок в публикации и не могу понять оставьте комментарий (возможно, у вас еще недостаточно представителей).