2010-06-21 4 views
2

В моем приложении строка, сгенерированная его длиной, может варьироваться от 1 до 100 (не используя случайное число-алгоритм). Но я хочу, если длина меньше 7, чем необходимости добавлять целые числа 1,2,3 .. до тех пор пока его размер досягаемость до 7. I реализует его, используя в то время как цикл, как:Создать строку, большую, чем фиксированная длина

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 

ли какой-либо другой лучший способ, такой как функция enbuild Tostring() с некоторым параметром?

+0

Вы, кажется, начинаете с 0 btw – apoorv020

ответ

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

+1

@dtb: во второй промежуточная строка (0..7 символов) короче. –

+0

@ Хенк Холтерман: Это относится к категории преждевременных пико-оптимизаций? Призывая его к микро-оптимизации чувствует overdimensioned :-) – dtb