String 문자열에 대해 알아보자.
string은 문자열 타입 / char는 문자, 즉 단일 문자 타입이다.
이를 다시 생각해보면
문자열 = 문자의 집합 = char의 집합
이 되는데 사실 이를 이용해 string에 내장된 builtin method를 직접 구현할 수도 있다.
코딩을 하다보면 자주 나오는 string의 method는 아래 5가지와 메소드는 아니지만 string 변수 Length까지 있다.
1. Format() - 형식을 정한다.
2. Split() - 문자열을 나눈다.
3. Substring() - 포함된 문자(char)를 뺀다.
4. compareTo() - 문자열의 비교, int를 return한다. 앞인지 뒤인지 판별해 자리 리턴
- 비교하는 문자가 같으면 0 리턴, 비교하는 문자가 다르다면 1, -1 리턴
- 같으면 0, 다르면 1이나 -1을 return하는데 비교하는 문자보다 정렬순이 작으면 -1, 크면
5. replace() - 특정 문자를 검색해서 그 문자를 변경한다.
=> 쓰지말고 그냥 equal쓰자 (보통 0이 false인데 쟤는 일치하면 0 리턴하는게 구림)
* length - 문자열의 길이, int를 return한다.
위의 6가지 친구들에 대해 예시와 함께 살펴보자
string.Format()
string str = "C# programming study";
string str_1 = "C#";
string str_2 = "programming";
string format_str_1 = string.Format("{0} {1}", str_1, str_2);
string format_str_2 = string.Format($"{str_1} {str_2}");
Console.WriteLine(format_str_1);
Console.WriteLine(); //string format이 감춰서 들어가있다
Console.WriteLine(format_str_2);
format 함수는 string 문자열을 string에 대입한다고 공식문서에 나와있다.
위의 코드를 실행해보면 format_str_1에는 str_1과 str_2를 ""안에 넣어둔 형태 자체로 string의 값을 가지게 된다.
str_2도 위의 결과와 동일하지만 다르게 작성된 코드이다.
이를 통해 Console.WriteLine에는 string format이 감춰서 들어가 있다는 점까지 생각해 볼 수 있다.
string.Split()
string str_sp = "I don't care";
string[] str_arr = str_sp.Split('c');
for (int i =0; i < str_arr.Length; i++)
{
Console.WriteLine(str_arr[i]);
}
Split 함수는 나눈다고 생각하기 쉽지만, 실제로 돌려보면 char를 하나 제거하는 느낌에 더 가깝다.
또한 string.Split의 결과로 string의 배열이 나오기 때문에 이를 받아 출력하려면 for문으로 하나하나 원소에 접근해야한다.
실행하면 I don't are이 줄바꿈 포함해서 나온다
string.Substring()
string str_substring = "가나다라마바사";
string str_substring_c_1 = str_substring.Substring(3); //시작지점과 길이 /int 하나면 시작지점, 끝까지 출력
string str_substring_c_2 = str_substring.Substring(0, 3); //앞 3개 나옴 뽑아냄
Console.WriteLine(str_substring_c_1);
Console.WriteLine(str_substring_c_2);
substring의 함수는 함수를 나누어 저장한다고 볼 수 있다.
substring은 매개변수로 int를 받으며, 하나의 정수만 받는다면 해당 시작지점부터 마지막까지의 문자열을 저장하고,
매개변수로 int를 두 개를 받으면 int부터 int까지의 문자열을 저장한다.
실행한다면
라마바사 \n 가나다라 가 나온다.
string.CompareTo()
string str = "태정태세";
int compare = str.CompareTo("태정");
bool iscompare = str.Equals("태정"); //equals 는 모든 변수에 들어있는 메소드, equals는 비교 메소드, ==는 비교 연산자, 반환 형태는 똑같은데 equals()가 더 빠르다.
Console.WriteLine(compare);
Console.WriteLine(iscompare); //아예 같지 않으면 false
CompareTo는 복잡한 함수이지만, 보통 equals 느낌으로 쓰인다.
문자열과 문자열이 아예 같다면 0을 출력한다. 하지만 이를 bool로 들어가면 0은 false를 의미하기 때문에 보통 equals 함수를 더 자주 이용한다.
더 자세히 말하자면 CompareTo는 문자열을 비교해 int를 return하며, 비교하는 문자가 같으면 0을, 다른데 비료하는 문자열보다 사전으로 정렬순이 작으면 -1, 크면 1을 리턴한다.
string.Replace()
string names = "가나 | 다라 | 마바 | 사 ";
names = names.Replace("가나", "초콜릿");
Console.WriteLine(names);
replace는 문자열에서 해당되는 부분의 문자열을 다른 문자열로 뒤바꿔놓는다.
string을 return하며, string 두개를 입력받는다
위의 코드를 실행한다면
초콜릿 | 다라 | 마바 | 사 가 나온다
string.Length
string str_length = "프로그래머"; //띄어쓰기 포함으로 센다
Console.WriteLine(str_length.Length);
Length는 문자열을 세는 변수로, int를 return한다.
띄어쓰기를 포함해서 세어 위의 식은 5가 나온다.
지난번에 언급했다시피 length는 이미 길이가 정해져있어서 쓰며, 가변적일때는 count를 쓴다.
이 외에 string에 이미 들어있는 메소드를 더 살펴보자.
String.IndexOf("문자 / 문자열")
- int값을 반환하며, " " 안의 문자나 문자열이 존재한다면 처음으로 발견되는 index값을, 존재하지 않는다면 -1을 반환한다.
String.lastIndexOf("문자 / 문자열")
- 문자열의 뒤에서 부터 지정된 문자열을 최초로 찾는 index를 반환하고, 발견하지 못한다면 -1을 반환한다.
String.Remove( int / int int )
- 매개변수로 int를 받으며 한 개를 받으면 해당 위치의 문자를 삭제하는 새 문자열을 반환하고, 두 개를 받으면 해당 위치부터 위치까지를 삭제한 새 문자열을 반환한다.
String.ToUpper / ToLower()
- 문자열의 복사본을 대문자로 / 소문자로 변환해 반환한다.
String.Trim(char[] / char / )
- 매개변수를 입력하지 않는다면 선행 공백, 후행 공백을 모두 제거하며 char를 넣을시 해당 문자의 선행 / 후행 인스턴스를 모두 제거하고, char[]를 입력할 시 현재 문자열에서 배열의 문자 선행 항목과 후행 항목을 모두 제거한다.
String.ToCharArray( / int int)
- 문자열을 char array로 바꾸거나, 지정된 부분 문자열에 있는 문자를 문자 배열에 복사한다.
'공부 > C#' 카테고리의 다른 글
[C#] class 추가와 public / private 속성(프로퍼티)의 get set 초기화식 (0) | 2023.03.22 |
---|---|
[C#] 상속(Inheritance) / 오버로딩 + 오버라이딩 (0) | 2023.03.22 |
[C#] 이차원 배열과 구조체, static과 트럼프 카드 출력 코드 (0) | 2023.03.20 |
[C#] 배열, foreach, 셔플 코드와 이를 이용한 예제 및 로또 생성기 (0) | 2023.03.17 |
[C#] for문과 break, continue의 사용, 열거형 상수 enum과 예제 (0) | 2023.03.16 |