본문 바로가기

.NET

[C#] 문자열 자르기 - Substring, Split, IndexOf 의 사용

언어를 불문하고 문자열을 자를일 조차 없는 프로그램은 드물것이다.

다른 언어로는 많이 했었지만 C# 으로는 처음 해보기 때문에.. 다행히 Substring 과 Split 이라는 통용되는 이름의 함수가 C# 에도 존재했다. 사용법도 다른 언어들과 비슷할 것 같으니 한번 사용해보자.

 

Substring

String 클래스의 Substring() 은 문자열의 원하는 위치, 길이만큼 자르고 싶을 때 사용한다.

 

2가지 사용법

  • Substring(Int32) : 지정된 문자위치에서 문자열의 끝까지 탐색해 반환한다.
  • Substring(Int32, Int32) : 지정된 시작위치에서 지정된 길이만큼 탐색해 반환한다.

 

string test = "This is the test";

Console.WriteLine("{0}", test.SubString(8));
Console.WriteLine("{0}", test.SubString(5, 2));

첫번째 출력문의 index 8 자리 문자는 문자열 안의 the 의 t 이다.

따라서 끝까지인 the test 를 출력한다.

 

두번째 출력문의 index 5 자리 문자는 is 의 i 이고 그 위치로부터 2글자를 지정했으므로 is 를 출력한다.

 

출력

the test
is

 

Split

문자열을 단순히 index 와 길이만으로 자르기 힘든 경우가 있다.

예를 들어서 "," 를 기준으로 자르고 싶다거나 특정 단어를 기준으로 자르고 싶을 때는 String 클래스의 Split() 을 사용한다. Split() 은 char 값이나 배열을 인자로 받고 받은 패턴을 기준으로 자른 문자열들을 string 배열로 반환한다.

 

string test = "This is the test";
string[] words = test.Split(' ');

foreach (string word in words) {
	Console.WriteLine(word);
}

두번째 줄에서 Split() 에 공백을 넣어줬다.

따라서 출력값은 공백을 기준으로 나누어진 string 배열이 될 것이다.

 

출력

This
is
the
test

 

IndexOf

String 클래스의 IndexOf() 함수는 9가지로 오버로드 되어있다.

그 중 가장 많이 사용하게 되는 것은 IndexOf(String) 형의 함수이다.

String 값으로 검색하고 싶은 문자열을 받아 해당 문자열의 시작 index 를 반환한다.

 

string test = "This is the test";
int index = test.IndexOf("test");

Console.WriteLine(Convert.ToString(index));

 

출력

12