이 설명서는 보관되지만 유지 되지 않습니다.

String 클래스

텍스트를 일련의 유니코드 문자로 나타냅니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class String : IComparable, ICloneable, IConvertible, 
	IComparable<string>, IEnumerable<string>, IEnumerable, 
	IEquatable<string>
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class String implements IComparable, ICloneable, 
	IConvertible, IComparable<String>, IEnumerable<String>, 
	IEnumerable, IEquatable<String>
SerializableAttribute 
ComVisibleAttribute(true) 
public final class String implements IComparable, ICloneable, 
	IConvertible, IComparable<String>, IEnumerable<String>, 
	IEnumerable, IEquatable<String>

문자열은 텍스트를 나타내는 데 사용되는 유니코드 문자의 순차적인 컬렉션입니다. String 개체는 문자열을 나타내는 System.Char 개체의 순차적인 컬렉션입니다. String 개체의 값은 순차적인 컬렉션의 내용이며 변경할 수 없습니다.

String 개체는 일단 만들어지면 값을 수정할 수 없으므로 변경할 수 없습니다. 즉, 읽기 전용입니다. String 개체를 수정하는 것처럼 보이는 메서드는 실제로는 해당 수정 사항을 포함하는 새 String 개체를 반환합니다. 문자열 형식 개체의 실제 내용을 수정해야 하는 경우에는 System.Text.StringBuilder 클래스를 사용하면 됩니다.

문자열에 있는 각각의 유니코드 문자는 유니코드 스칼라 값으로 정의됩니다. 유니코드 스칼라 값은 유니코드 문자의 서수(숫자) 값 또는 유니코드 코드 포인트라고도 합니다. 각 코드 포인트는 UTF-16 인코딩을 사용하여 인코딩되고 인코딩 각 요소의 숫자 값은 Char 개체로 표시됩니다.

단일 Char 개체는 일반적으로 단일 코드 포인트를 나타냅니다. 즉, Char의 숫자 값은 코드 포인트와 같습니다. 그러나 코드 포인트에는 두 개 이상의 인코딩된 요소가 필요할 수 있습니다. 예를 들면, 유니코드 보충 코드 포인트(서로게이트 쌍)는 Char 개체 두 개로 인코딩됩니다.

인덱스

인덱스는 String에 있는 유니코드 문자가 아니라 Char 개체의 위치입니다. 인덱스는 0부터 시작하는 음수가 아닌 수이며 인덱스 위치가 0인 문자열의 첫 위치부터 시작됩니다. 연속된 인덱스 값은 유니코드 문자가 두 개 이상의 Char 개체로 인코딩될 수 있기 때문에 연속된 유니코드 문자와 일치하지 않을 수도 있습니다. 각각의 Char 개체 대신에 각각의 유니코드 문자로 작업하려면 System.Globalization.StringInfo 클래스를 사용합니다.

서수 및 culture 구분 연산

String 클래스의 멤버는 String 개체에서 서수 또는 언어 연산을 수행합니다. 서수적 연산은 Char 개체 각각의 숫자 값에 수행됩니다. 언어적 연산은 culture별 캐스팅, 정렬, 형식 지정 및 구문 분석 규칙을 고려하여 String의 값에 수행됩니다. 언어적 연산은 명시적으로 선언된 culture 또는 암시적인 현재 culture의 컨텍스트에서 수행됩니다. 현재 culture에 대한 자세한 내용은 CultureInfo.CurrentCulture 항목을 참조하십시오.

대/소문자 규칙에서는 유니코드 문자를 소문자에서 대문자로 또는 대문자에서 소문자로 변경하는 방법을 결정합니다.

형식 지정 규칙에서는 값을 문자열 표현으로 변환하는 방법을 결정하고, 구문 분석 규칙에서는 문자열 표현을 값으로 변환하는 방법을 결정합니다.

정렬 규칙에서는 유니코드 문자의 알파벳 순서 및 두 문자열을 서로 비교하는 방법을 결정합니다. 예를 들면, Compare 메서드는 언어적 연산을 수행하지만 CompareOrdinal 메서드는 서수적 연산을 수행합니다. 따라서 현재 culture가 미국 영어이면, Compare 메서드는 'a'를 'A'보다 작다고 여기지만 CompareOrdinal 메서드는 'a'가 'A'보다 크다고 여깁니다.

.NET Framework에서는 단어, 문자열 및 서수 정렬 규칙을 지원합니다. 단어 정렬에서는 culture에 따라 문자열을 비교합니다. 문자열에서 특정한 비영숫자 유니코드 문자에는 특별한 가중치가 할당될 수 있습니다. 예를 들면, 하이픈("-")에는 매우 적은 가중치가 할당될 수 있으므로 "coop"와 "co-op"는 정렬된 목록에서 서로 붙어있을 수 있습니다. 문자열 정렬에는 특수한 경우가 없으며 모든 비영숫자 기호가 모든 영숫자 유니코드 문자 전에 나온다는 점을 제외하면 단어 정렬과 비슷합니다.

culture 구분 비교는 CultureInfo.InvariantCulture 속성으로 지정된 고정 culture를 비롯하여 CultureInfo 개체를 명시적 또는 암시적으로 사용하는 비교입니다. 현재 암시적 culture는 Thread.CurrentCulture 속성을 사용하여 지정됩니다.

서수 정렬에서는 문자열에 있는 Char 개체 각각의 숫자 값을 기준으로 문자열을 비교합니다. 소문자 버전과 대문자 버전의 문자는 코드 포인트가 서로 다르므로 서수 비교에서는 자동으로 대/소문자가 구분됩니다. 그러나 응용 프로그램에서 대/소문자가 중요하지 않은 경우에는 대/소문자를 무시하는 서수 비교를 지정할 수 있습니다. 이는 고정 culture를 사용하여 문자열을 대문자로 변환한 다음 해당 결과에 대해 서수 비교를 수행하는 것과 같습니다.

단어, 문자열 및 서수 정렬 규칙에 대한 자세한 내용은 System.Globalization.CompareOptions를 참조하십시오.

정렬에는 대개 서수 비교가 아니라 culture 구분 비교가 적절합니다. 또한 두 개의 문자열이 같은지 여부, 즉 동일성을 확인하는 데는 대개 culture 구분 비교가 아니라 서수 비교가 적절합니다.

비교 및 검색 메서드에 대한 설명 부분에서는 메서드가 대/소문자 구분 및/또는 culture 구분인지 여부를 지정합니다. 정의에 따르면, 빈 문자열("")을 포함한 모든 문자열은 null 참조보다 큰 것으로 간주되고 두 개의 null 참조는 서로 같은 것으로 간주됩니다.

정규화

일부 유니코드 문자에는 조합 및/또는 합성 유니코드 문자 집합으로 구성된 여러 동등한 이진 표현이 있습니다. 유니코드 표준은 정규화라는 프로세스를 정의하며 이 프로세스는 문자에 대한 동등한 이진 표현이 주어질 경우 이진 표현 하나를 반환합니다. 정규화는 정규화 폼이라는 서로 다른 규칙을 따르는 여러 알고리즘을 사용하여 수행할 수 있습니다. .NET Framework에서는 현재 정규화 형식 C, D, KC 및 KD를 지원합니다. 일반적으로 정규화된 문자열 쌍은 서수 비교를 통해 계산됩니다.

보안 고려 사항

응용 프로그램에서 파일 이름 또는 명명된 파이프 같은 기호 식별자나 XML 파일의 텍스트 기반 데이터 같은 보관된 데이터에 대한 보안을 결정할 경우, 해당 작업에서는 culture 구분 비교 대신 서수 비교를 사용해야 합니다. culture 구분 비교에서는 적용된 culture에 따라 다른 결과가 생성될 수 있는 반면, 서수 비교에서는 비교되는 문자의 이진 값에 따라서만 결과가 결정되기 때문입니다.

기능

String 클래스는 String 개체와 비교할 멤버를 제공하고, String 개체에 있는 문자나 문자열의 인덱스를 반환하고, String 개체 값을 복사하고, 문자열을 분할하거나 결합하고, 문자열 값을 수정하고, 숫자, 날짜 및 시간 또는 열거형 값의 형식을 문자열로 지정하고, 문자열을 정규화합니다.

  • 비교를 위해 Compare, CompareOrdinal, CompareTo, Equals, EndsWithStartsWith 메서드를 사용합니다.

  • 문자열에 있는 유니코드 문자 또는 부분 문자열의 인덱스를 얻으려면 IndexOf, IndexOfAny, LastIndexOfLastIndexOfAny 메서드 사용합니다.

  • 문자열이나 부분 문자열을 다른 문자열이나 Char 형식의 배열로 복사하려면 CopyCopyTo를 사용합니다.

  • 원래 문자열의 부분에서 하나 이상의 새 문자열을 만들려면 SubstringSplit 메서드를 사용하고, 하나 이상의 부분 문자열에서 새 문자열을 만들려면 ConcatJoin 메서드를 사용합니다.

  • 문자열 모두나 일부분을 수정하려면 Insert , Replace , Remove , PadLeft , PadRight , Trim , TrimEndTrimStart를 사용합니다.

  • 문자열에서 유니코드 문자의 대/소문자를 변경하려면 ToLower, ToLowerInvariant, ToUpperToUpperInvariant 메서드를 사용합니다.

  • 문자열에서 하나 이상의 형식 항목 자리 표시자를 하나 이상의 숫자, 날짜 및 시간 또는 열거형 값의 텍스트 표현으로 대체하려면 Format을 사용합니다.

  • 문자열에 있는 Char 개체의 수를 얻으려면 Length 속성을 사용하고, 문자열에 있는 실제 Char 개체에 액세스하려면 Chars를 사용합니다.

  • 문자열이 특정 정규화 형식으로 정규화되었는지 여부를 테스트하려면 IsNormalized 메서드를 사용합니다. 특정 정규화 형식으로 정규화되는 문자열을 만들려면 Normalize 메서드를 사용합니다.

구현된 인터페이스

String 클래스는 IComparable, ICloneable, IConvertible, IEnumerableIComparable 인터페이스를 구현합니다. 변환을 위해 이 형식의 IConvertible 명시적 인터페이스 멤버 구현 대신 Convert 클래스를 사용합니다.

이 형식은 다중 스레드 작업을 수행하는 데 안전합니다.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원
표시: