2011-05-22 87 views
1

我目前正在研究這個我的示例代碼,其中我想顯示從服務器到客戶端屏幕的數字數組。使用Console.Write字符串格式與

基本上,我首先使服務器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 

可有人請點我一個很好的辦法做到這一點? :)

回答

4

String.PadLeft是你所追求的 - 這將使用你選擇的填充字符來填充給定字符串的左手邊,使其成爲n個字符長。

要打破你需要每n個號碼(您Console.Write(...)後):

if((i % n) == 0) { 
    Console.WriteLine(); 
} 
+0

感謝您的支持!但是休息時間呢?我想在每20個號碼之後打破字符串寫法。 – Smiley 2011-05-22 15:08:33

+0

參見上面的修訂。 – 2011-05-22 15:10:45

+0

非常感謝! :) – Smiley 2011-05-22 15:36:52

1

我認爲你的客戶存在問題。你發送一個逗號分隔的字符串,我沒有看到你處理該字符串。 我假設使用了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

非常完整:)您可以更改\ n寫入Console.WriteLine?還是Environment.NewLine? – JTew 2011-05-23 02:25:30

+0

好的建議,謝謝。 – 2011-05-23 04:16:11