2010-06-21 5 views
2

내 응용 프로그램에서는 길이가 1에서 100까지 가변적으로 생성됩니다 (임의 번호 algo는 사용하지 않음).고정 길이보다 큰 문자열 생성

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 

는 다른 더 좋은 방법이 같은인가 :하지만 길이가 7 미만의 정수 1,2,3를 추가 할 필요가보다 경우 원하는 .. 7.에 전까지 크기의 범위는 루프로 동안 사용 구현 일부 매개 변수를 사용하여 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 : 2의 중간 문자열은 (0..7 문자) 짧습니다. –

+0

@Henk Holterman : 조기 피코 최적화의 범주에 해당합니까? 마이크로 최적화라고 부르는 것은 과도하게 느껴졌습니다 :-) – dtb

관련 문제