프로그래밍 언어 공부를 시작하면,
Hello World 다음에 배우는게 문자열이 아닐까 싶다. (뭐 다른것을 먼저 배울수도 있지만.....)
가장 먼저 배웠다는 핑계하에 문자열에 대해 간과하고 있는 부분이 많은거 같아
이 기회에 이것저것 복습 겸 정리해보려 한다.
사실, 프로그래밍 문제를 풀면서 몰랐던 부분을 정리한다.
문제는 string <=> char[] 변경하여 응용하는 문제였고,
사실 문자열 메서드를 현업에서 자주 사용하지 않아 몰랐던 부분이었다. (창피하다..읔)
일단 간단한 상식으로, string은 클래스이고 char는 구조체 형식이다.
그리고 string은 char의 집합체라고 말할 수 있다. (즉, 여러개의 char가 모여 하나의 string을 이룬다.)
그래서 아래와 같이 string도 foreach문 사용이 가능한 것이다.
1
2
3
4
|
var str = "abcedf";
foreach(char chr in str) {
Console.WriteLine(chr);
}
|
cs |
그렇다면 string의 특정 위치에 있는 값을 바꾸기도 가능할까?
답은 '불가능하다' 이다. 그 이유는 아래의 예제에서 확인할 수 있다.
string을 for문 사용했고, 값을 설정하려고 했더니 아래와 같이
string.this[int] 속성 또는 인덱서는 읽기 전용이므로 할망할 수 없습니다. 라는 에러가 발생하였다.
그래서 string의 특정 위치의 값을 변경하기 위해서, 사용한 방법(순서)은 아래와 같다.
- string을 char[]로 변경한다.
- char[index]로 접근하여 값을 변경한다.
- char[]을 string으로 다시 변경한다.
그렇다면 string을 char[]로 형변환 하는 방법과
char[]을 string으로 형변환 하는 방법을 알아야 한다. (난 몰랐다...사실 하나는 알았다...)
아래 예제가 형변환하는 방법을 적어두었다.
1
2
3
4
5
6
7
8
9
|
var str = "abcedf";
// string => char[]
var strTochar = str.ToCharArray();
// char[] => string
var charTostr1 = new string(strTochar);
var charTostr2 = string.Concat(strTochar);
var charTostr3 = string.Join("", strTochar);
|
cs |
'개발 > C#' 카테고리의 다른 글
[C#] StringBuilder를 사용해야 하는 이유 (4) | 2021.04.11 |
---|---|
[C#] Google SpreadSheets V4 데이터 추가/수정/읽기. (0) | 2021.03.29 |
[C#] ENUM(열거형)을 적극 사용하자. (2) | 2021.01.04 |
[C#] LINQ, 객체 속성 예외/중복 삭제(차집합) (0) | 2020.11.02 |
[C#] Boxing / Unboxing (박싱/언박싱) 알아보자. (3) | 2020.07.30 |