2010-06-21 69 views
2

在我的應用程序中,生成一個字符串的長度可以從1到100變化(不使用隨機數字算法)。但我想,如果長度小於7比需要加整數1,2,3 ..直到其規模達到7我實現它使用while循環:生成大於固定長度的字符串

If generatedUserName.Length < 7 Then 
    Dim count As Int32 = 0 
    While generatedUserName.Length < 7 
     generatedUserName = generatedUserName & count.ToString() 
     count = count + 1 
    End While 
End If 

是任何其他更好的辦法,如用一些參數建立函數Tostring()?

+0

你似乎從0開始btw – apoorv020 2010-06-21 14:01:30

回答

6

最簡單的方法是這樣的:

if (generatedUserName.Length < 7) 
{ 
    generatedUserName = (generatedUserName + "1234567").Substring(0, 7); 
} 

它的效率會低一點,但不太可能導致瓶頸......

另一種方法是:

if (generatedUserName.Length < 7) 
{ 
    string suffix = "1234567".Substring(0, 7 - generatedUserName.Length); 
    generatedUserName = generatedUserName + suffix; 
} 

稍微更高效(但可怕)的方式:

private static readonly string[] Suffixes = { 
    "1234567", "123456", "12345", "1234", "123", "12", "1" 
}; 
... 

if (generatedUserName.Length < 7) 
{ 
    generatedUserName = generatedUserName + Suffixes[generatedUserName.Length]; 
} 
+0

爲什麼替代品效率更低?兩種解決方案都創建了兩個新字符串 – dtb 2010-06-21 13:58:45

+1

@dtb:在第二個中間字符串是(0..7個字符)更短。 – 2010-06-21 14:03:06

+0

@亨克霍爾特曼:這是否屬於過早微微優化?稱它微觀優化感覺過度:-) – dtb 2010-06-21 14:06:46

相關問題