2010-06-21 6 views
2

Dans mon application, une chaîne générée sa longueur peut varier de 1 à 100 (n'utilisant pas algo numéro aléatoire). Mais je veux que si la longueur est inférieure à 7 que le besoin d'ajouter des entiers 1,2,3 .. jusqu'à ce sa portée de taille à 7. Je met en œuvre à l'aide en boucle comme:Générer une chaîne de longueur supérieure à une longueur fixe

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 

Est-ce une autre meilleure façon telle que Enbuild fonction Tostring() avec un paramètre?

+0

vous semblez commencer à partir de 0 btw – apoorv020

Répondre

6

La façon la plus simple serait quelque chose comme:

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

Il est un peu inefficace, mais peu susceptibles de provoquer un goulot d'étranglement ...

Une autre alternative serait la suivante:

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

légèrement manière plus efficace (mais horrible):

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

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

Pourquoi l'alternative est-elle moins inefficace? Les deux solutions créent deux nouvelles chaînes. – dtb

+1

@dtb: dans le 2ème, la chaîne intermédiaire est (0..7 caractères) plus courte. –

+0

@Henk Holterman: Cela tombe-t-il dans la catégorie des pico-optimisations prématurées? L'appeler micro-optimisation se sent surdimensionné :-) – dtb

Questions connexes