2015-09-01 2 views
-1

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

Пример:

======================================================================== 
=======================This would be the text here====================== 
======================================================================== 

Текст Это будет текст здесь будет то, что будет направлен в функцию. Это может быть что угодно, от 4-х символов до макс 72. Я хотел бы видеть, если есть более простой способ кодирования это, то следующее, что я использую:

Dim cnt As Integer = 0 
Dim ch As Char = "" 

For Each c As Char In _tmpDebugArray(0) 
    If c = ch Then cnt += 1 
Next 

cnt = Math.Round((cnt - 72)/2, 2) 

CNT бы дать мне количество =, которое мне нужно будет использовать с левой и с правой стороны от имени отладочной информации, чтобы соответствовать верхнему/нижнему участку вывода =.

Пример:

Dim strDebug string = "Bob The Builder" 
cnt = 72 - strDebug   '72-15 = 57 
cnt = Math.Round(cnt/2, 2) '57/2 = 29 (28.5 rounded) 

Таким образом, в приведенном выше примере = бы слева затем отладки строки Боб Строитель, а затем = «s на с правой стороны. Хотя это, как правило, отключается здесь и там в зависимости от того, как долго длится строка отладки.

ответ

2

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

Sub DisplayText(ByVal text As String) 

    Const WIDTH As Integer = 72 
    Const DISPLAY_CHAR As String = "="c 

    Console.WriteLine("".PadLeft(WIDTH, DISPLAY_CHAR)) 
    Console.WriteLine(text.PadLeft((WIDTH + text.Length)/2, DISPLAY_CHAR).PadRight(WIDTH, DISPLAY_CHAR)) 
    Console.WriteLine("".PadLeft(WIDTH, DISPLAY_CHAR)) 

End Sub 
+0

работал отлично! Спасибо, the_lotus. – StealthRT

0

Предполагая, что вы будете просматривать только эти строки в фиксированной ширины шрифта, вы можете использовать PadLeft и PadRight раздуть вашу строку до нужной длины. Следующая функция делает это с любой строкой, символом заполнения и длиной.

Function PadStringCentre(str As String, ch As Char, len As Integer) As String 
    Dim numLeft As Integer = (len - str.Length) \ 2 + str.Length 
    Dim numRight As Integer = len - str.Length - numRight 
    Return str.PadLeft(numLeft,ch).PadRight(len, ch) 
End Function 

Вы могли бы назвать это так

Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Label1.Text = PadStringCentre("Bob The Builder", "="c, 72) 
End Sub 
Смежные вопросы