Vb.net 生成大于固定长度的字符串

Vb.net 生成大于固定长度的字符串,vb.net,algorithm,Vb.net,Algorithm,在我的应用程序中,生成的字符串长度可以从1到100不等(不使用随机数算法)。但我想知道,如果长度小于7,就需要加整数1,2,3。。直到它的大小达到7。我使用while循环将其实现为: If generatedUserName.Length < 7 Then Dim count As Int32 = 0 While generatedUserName.Length < 7 generatedUserName = generatedUserName &am

在我的应用程序中,生成的字符串长度可以从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
如果generatedUserName.Length小于7,则
整数计数为Int32=0
而GenerateUserName.Length<7
generatedUserName=generatedUserName&count.ToString()
计数=计数+1
结束时
如果结束

是否还有其他更好的方法,例如使用参数的enbuild函数Tostring()。

最简单的方法是:

if (generatedUserName.Length < 7)
{
    generatedUserName = (generatedUserName + "1234567").Substring(0, 7);
}
if(generatedUserName.Length<7)
{
generatedUserName=(generatedUserName+“1234567”)。子字符串(0,7);
}
这有点低效,但不太可能造成瓶颈

另一种选择是:

if (generatedUserName.Length < 7)
{
    string suffix = "1234567".Substring(0, 7 - generatedUserName.Length);
    generatedUserName = generatedUserName + suffix;
}
if(generatedUserName.Length<7)
{
字符串后缀=“1234567”。子字符串(0,7-generatedUserName.Length);
generatedUserName=generatedUserName+后缀;
}
一种稍微高效(但可怕)的方法:

私有静态只读字符串[]后缀={
"1234567", "123456", "12345", "1234", "123", "12", "1"
};
...
如果(generatedUserName.Length<7)
{
generatedUserName=generatedUserName+后缀[generatedUserName.Length];
}

为什么替代方案效率较低?两种解决方案都会创建两个新字符串。@dtb:在第二个解决方案中,中间字符串较短(0..7个字符)。@Henk Holterman:这属于过早的pico优化吗?称之为微优化让人觉得太夸张了:-)@dtb:我并没有真的建议第二种方法来节省效率。这是更多的,有些人可能会觉得它更可读。你似乎是从0开始的btw
private static readonly string[] Suffixes = {
    "1234567", "123456", "12345", "1234", "123", "12", "1"
};
...

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