Работа с Console.Write String Форматирование с - PullRequest
1 голос
/ 22 мая 2011

В настоящее время я работаю над своим примером кода, в котором хочу отобразить массив чисел, поступающих с сервера на экран клиента.

По сути, я сначала заставляю сервер создать массив из 99 случайно сгенерированных чисел со значениями от 1 до 100, преобразовать массив в строку, а затем передать строку на сервер с помощью байтовой отправки.

Код выглядит так:

//SERVER
int[] result = GenerateNumbers();
string resultingString = "";
for (int i = 0; i < result.Length; i++)
     resultingString = resultingString + result[i] + ",";
s.Send(asen.GetBytes(resultingString));

//CLIENT
byte[] bb = new byte[1000];
int k = stm.Read(bb, 0, 1000);

for (int i = 0; i < k; i++)
{
     Console.Write(Convert.ToChar(bb[i]));
}

Теперь я хочу показать полученный массив на экране клиента. Мой код в настоящее время может сделать это. Однако с помощью команды Console.Write() она непрерывно отображает строку до ее окончания. Как в приведенном ниже примере:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 ... 93 94 95 96 97 98 99

Что я хочу сделать сейчас, так это настроить отображение следующим образом:

 1  2  3  4  5  6  7  8  9 10
11 12 13 14 15 16 17 18 19 20
21 22 23  . . . . . . . . . . 
90 91 92 93 94 95 96 97 98 99

Может кто-нибудь указать мне хороший способ сделать это? :)

Ответы [ 3 ]

4 голосов
/ 22 мая 2011

String.PadLeft - это то, что вам нужно - это дополнит левую часть заданной строки, чтобы сделать ее длиной n символов, используя выбранный вами символ заполнения.

Чтобы разбить каждый n-й номер, который вам нужен (после Console.Write (...);):

if((i % n) == 0) {
  Console.WriteLine();
}
1 голос
/ 22 мая 2011

Я думаю, что есть проблема с вашим клиентом.Вы отправляете строку через запятую, и я не вижу, чтобы вы обрабатывали это.Я предположил, что использовался UTF8.Надеюсь, это поможет:

//CLIENT
//Makes an array to hold stream content
var bb = new byte[stm.Length];
//Fill the array with the stream content
stm.Read(bb, 0, (int)stm.Length);
//Converts the array of bytes back to a string
var rcvString = System.Text.UTF8Encoding.UTF8.GetString(bb);
//Split the string into an array using "," as separator
var array = rcvString.Split(new string[]{","}, 
    StringSplitOptions.RemoveEmptyEntries);
var pad = 2;   
var inc = 20;
var max = array.Length;
//Iterates through the array in "inc" intervals                        
for (var i = 0; i < max; i+=inc)
{
    //Iterates through a section of the array determined by "i" and "inc" 
    //(there is a special case if "inc" it's not a multiple of max)
    for (var j = 0; j < (max - i > inc ? inc : max - i); j += 1)
    {
        Console.Write(String.Format(@" {0}",array[i + j].PadLeft(pad)));
    }
    Console.WriteLine();
}
0 голосов
/ 22 мая 2011

Используйте Метод Console.WriteLine , чтобы перейти к новой строке с соответствующим значением.

...