VB.NET 2008/VB - 문자열

문자열 - 형식 지정 중 숫자 형식 문자열

본클라쓰 2011. 4. 8. 09:29

 

.NET Framework는 값을 표시에 적합한 문자열로 변환하기 위한 일반적이면서 사용자 지정이 가능한 형식 지정 메커니즘을 제공한다. 예를 들어, 숫자 값의 형식을 16진수, 과학적 표기법 똔느 사용자가 지정한 문장 부호로 자릿수가 구분되는 일련의 숫자 형식을 사용하여 지정할 수 있다.

 

형식 문자열 및 형식 공급자를 지정하거나 기본값을 사용하여 형식 지정을 제어한다. 형식 문자열은 값이 변환되는 방식을 나타내는 하나 이상의 형식 지정자를 포함한다. 형식 공급자는 특정 형식을 변환하는 데 필요한 추가 제어, 대체 및 문화권 정보를 제공한다.

 

 

.NET Framework의 합성 형식 지정 기능에는 개체 목록과 합성 형식 문자열이 입력으로 사용된다. 합성 형식 문자열은 고정 텍스트와 목록의 개체에 해당하느느 인덱싱된 자리 표시자(형식 항목이라고 함)가 결합된 형태로 구성된다. 형식 지정 작업을 통해 원래의 고정 텍스트와 목록에 있는 개체의 문자열 표현이 결합된 형태의 결과 문자열을 얻을 수 있다.

 

합성 형식 지정 기능은 Format AppendFormat과 같은 메서드와 WriteLine TextWriter.WriteLine의 일부 오버로드를 통해 사용할 수 있다. String.Format 메서드는 형식이 지정된 결과 문자열을 생성하고, AppendFormat 메서드는 StringBuilder 개체에 형식이 지정된 결과 문자열을 추가하고, Console.WriteLine 메서드는 형식이 지정된 결과 문자열을 콘솔에 표시하며, TextWriter.WriteLine 메서드는 형식이 지정된 결과 문자열을 스트림이나 파일에 쓴다.

 

 

숫자 형식 문자열은 숫자 데이터 형식을 문자열로 나타내는 형식 지정 작업을 제어한다. 숫자 형식 문자열은 다음과 같이 두 가지 범주로 나뉜다.

 

 

 

- 표준 숫자 형식 문자열

 

표준 숫자 형식 문자열은 일반 숫자 형식을 지정하는 데 사용된다. 표준 숫자 형식 문자열에는 Axx 형식을 사용한다. 여기서 A는 영문자로서 형식 지정자라고 하며 xx는 선택적 정수로서 전체 자릿수 지정자라고 한다. 전체 자릿수 지정자는 0에서 99사이의 정수이며 결과의 자릿수에 영향을 준다. 공백을 포함하여 영문자가 두 개 이상 포함된 숫자 형식 문자열은 사용자 지정 숫자 형식 문자열로 해석된다.

 

 

"C" - 통화

 

숫자를 통화량을 나타내는 문자열로 변환한다. 이 변환은 현재 NumberFormatInfo 개체의 통화 형식 정보에 의해 제어된다.

 

전체 자릿수 지정자는 필요한 소수 자릿수를 나타낸다. 전체 자릿수 지정자를 생략하면 현재 NumberFormatInfo 개체에서 제공하는 기본 통화 전체 자릿수가 사용된다.

 

Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("C", CultureInfo.InvariantCulture))
' Displays 12,345.68

Console.WriteLine(value.ToString("C3", CultureInfo.InvariantCulture))
' Displays 12,345.679

 

"D" - 10진수

 

이 형식은 정수 계열 형식에만 사용할 수 있다. 숫자를 10진(0-9) 문자열로 변환하며, 숫자가 음수이면 앞에 빼기 부호를 붙인다.

 

전체 자릿수 지정자는 결과 문자열에서 요구하는 최소 자릿수를 나타낸다. 필요하면 수의 왼쪽을 0으로 채워서 전체 자릿수 지정자에 지정한 자릿수를 만든다.

 

Dim value As Integer

value = 12345
Console.WriteLine(value.ToString("D"))
' Displays 12345  
Console.WriteLine(value.ToString("D8"))
' Displays 00012345

 

"E" - 과학적 지수

 

숫자를 "-d.ddd...E+ddd" 또는 "-d.ddd...e+ddd" 형태의 문자열로 변환하는데, 여기서 각 'd'는 숫자(0-9)를 나타낸다. 숫자가 음수이면 문자열 앞에 빼기 부호가 붙는다. 소수점 앞에는 항상 숫자가 하나 있어야 한다.

 

전체 자릿수 지정자는 소수점 뒤에 필요한 자릿수를 나타낸다. 전체 자릿수 지정자가 생략되면 소수점 뒤에 기본 6자리가 사용된다.

 

형식 지정자의 대/소문자에 따라 지수에 "E" 또는 "e" 접두사를 붙일 것인지가 결정된다. 지수는 항상 더하기 또는 빼기 기호가 포함된 최소 3자리로 구성된다. 필요하면 지수를 0으로 채워서 이 조건을 만족시키니다.

 

Dim value As Double = 12345.6789
Console.WriteLine(value.ToString("E", CultureInfo.InvariantCulture))
' Displays 1.234568E+004

Console.WriteLine(value.ToString("E10", CultureInfo.InvariantCulture))
' Displays 1.2345678900E+004

 

"F" - 고정 소수점

 

숫자를 "-ddd.ddd" 현태의 문자열로 변환하는데, 여기서 각 'd'는 10진수를 나타낸다. 숫자가 음수이면 문자열 앞에 빼기 부호를 붙인다. 전체 자릿수 지정자는 필요한 소수 자릿수를 나타낸다. 전체 자릿수 지정자를 생략하면 현재 NumberFormatInfo 개체의 NumberDecimalDigits 속성에서 제공하는 기본 숫자 전체 자릿수가 사용된다.

 

Dim integerNumber As Integer
integerNumber = 17843
Console.WriteLine(integerNumber.ToString("F", CultureInfo.InvariantCulture))
' Displays 17843.00

 

"G"- 일반

 

숫자의 형식 및 전체 자릿수 지정자의 유무에 따라 숫자를 고정 소수점 또는 과학적 표기법 중에서 더 간단한 형식으로 변환된다. 전체 자릿수 지정자가 생략되거나 0이면 숫자의 형식에 따라 기본 자릿수가 결정된다.

 

Dim number As Double
number = 12345.6789     
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture))
' Displays  12345.6789

 

"N" - 숫자

 

숫자를 "-d,ddd,ddd.ddd" 형태의 문자열로 변환한다. 여기서 '-'는 필요한 경우 음수 부호를 나타내고, 'd'는 숫자를 나타내고, ','는 숫자 그룹 사이의 1000 단위 구분 기호를 나태내고, '.'는 소수점 기호를 나타낸다. 실제 음수 패턴, 숫자 그룹 크기, 1000단위 구분 기호 및 소수 구분 기호는 각각 현재 NumberFormatInfo 개체의 NumberNegativePattern, NumberGroupSizes, NumberGroupSeparator 및 NumberDecimalSeparator 속성에서 지정된다.

 

Dim dblValue As Double = -12445.6789
Console.WriteLine(dblValue.ToString("N", CultureInfo.InvariantCulture))
' Displays -12,445.68

 

"P" - 백분율

 

숫자가 음수이면 NumberFormatInfo.PercentNegativePattern 속성에 정의된 백분율으르 나타내는 문자열로 변환되고, 숫자가 양수이면 NumberFormatInfo.PercentPositivePattern 속성에 정의된 백분율을 나타내는 문자열로 변환된다. 변환된 수는 100을 곱하여 백분율로 표시된다.

 

전체 자릿수 지정자는 필요한 소수 자릿수를 나타낸다. 전체 자릿수 지정자를 생략하면 현재 NumberFormatInfo 개체에서 제공하는 기본 숫자 전체 자릿수가 사용된다.

 

Dim number As Double = .2468013
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture))
' Displays 24.68 %

 

"X" - 16진수

 

이 형식은 정수 계열 형식에만 사용할 수 있다. 숫자를 16진 문자열로 변환한다. 형식 지정자의 대/소문자는 9보다 큰 16진수에 대문자를 사용할 것인지 또는 소문자를 사용할 것이지를 나타낸다. 예를 들어 "X"를 사용하면 "ABCDEF"를 생성하고 'x'를 사용하면 'abcdef'를 생성한다.

 

전체 자릿수 지정자는 결과 문자열에서 요구하는 최소 자릿수르르 나타낸다. 필요하면 수의 왼쪽을 0으로 채워서 전체 자릿수 지정자에서 지정한 자릿수를 만든다.

 

Dim value As Integer
value = &h2045e
Console.WriteLine(value.ToString("x"))
' Displays 2045e
Console.WriteLine(value.ToString("X"))
' Displays 2045E

 

 

 

- 사용자 지정 숫자 형식 문자열

 

사용자가 하나 이상의 사용자 지정 숫자 형식 지정자를 사용하여 만드는 사용자 지정 숫자 형식 문자열은 숫자 데이터의 형식 지정방법을 정의한다.

 

 

"0" - 0자리 표시자

 

형식을 지정할 값이 형식 문자열의 '0'이 표시된 위치에 숫자를 가지고 있으면 해당 숫자가 결과 문자열로 복사되고, 그렇지 않으면 결과 문자열에 '0'이 표시된다. 소수점 앞 가장 왼쪽의 '0'과 소수점 뒤 가장 오른쪽 '0'의 위치는 결과 문자열에 항상 표시될 자릿수의 범위를 결정한다.

 

Dim value As Double
value = 123
Console.WriteLine(value.ToString("00000"))
' Displays 00123
value = 1.2
Console.Writeline(value.ToString("0.00", CultureInfo.InvariantCulture))
' Displays 1.20

 

"#" - 10진수 자리 표시자

 

형식을 지정할 값이 형식 문자열의 "#"이 표시된 위치에 숫자를 가지고 있으면 해당 숫자가 결과 문자열로 복사되고, 그렇지 않으면 결과 문자열의 해당 위치에 아무 것도 저장되지 않는다.

 

0이 유효 자릿수가 아니면 이 지정자는 문자열에서 '0'이 유일한 숫자라 할지라도 '0'을 표시하지 않는다. 표시되는 숫자에서 0이 유효 자릿수이면 이 지정자는 '0'을 표시한다 .

 

"##" 형식 문자열을 사용하면 해당 값이 소수점 뒤 첫째 자리에서 반올림되며 항상 0 이상의 정수로 표시된다. 예를 들어 34.5의 형식을 "##"으로 지정하면 결과는 35가 된다.

 

Dim value As Double
value = 1.2
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture))
' Displays 1.2
value = 123456
 Console.WriteLine(value.ToString("[##-##-##]"))      
 ' Displays [12-34-56]

 

"." - 소수점

 

형식 문자열의 첫 번째 '.' 문자는 형식이 지정될 값에서 소수 구분 기호의 위치르르 결정하며, 다른 '.' 문자는 무시된다.

 

Dim value As Double
value = 1.2
Console.Writeline(value.ToString("0.00", CultureInfo.InvariantCulture))
' Displays 1.20

value = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture)) 
' Displays 8.6%

"," - 1000 단위 구분 기호 및 숫자 배율

 

',' 문자는 1000 단위 구분 기호 지정자와 숫자 배율 지정자로 사용된다.

 

1000 단위 구분 기호 지정자는 두 개의 10진수 자리 표시자(#) 사이에 정수 계열 자릿수의 형식을 지정하는 하나 이상의 ',' 문자가 지정된 경우, 정수 계열 출력 부분의 각 숫자 그룹 사이에 그룹 구분 문자가 삽입된다.

 

숫자 배율 지정자는 명시적 또는 암시적 소수점의 바로 왼쪽에 하나 이사의 ',' 문자가 지정된 경우 형식을 지정할 숫자는 숫자 배율 지정자가 나타날 때마다 1000으로 나뉜다.

 

Dim value As Double = 1234567890
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture))
' Displays 1,234,567,890     
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture))
' Displays 1,235      

"%" - 백분율 자리 표시자

 

형식 문자열에 '%' 문자가 있으면 형식이 지정되기 전에 해당 수의 100이 곱해진다. 형식 문자열에서 '%'가 표시된 위치에는 숫자 자체에서 적절한 기호가 삽입된다. 사용되는 백분율 문자는 현재 NumberFormatInfo 클래스에 의해 결정된다.

 

Dim value As Double = .086
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture))
' Displays 8.6%