2010-06-21 133 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

相关问题