반응형

 

프로그래밍 언어 공부를 시작하면,

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의 특정 위치의 값을 변경하기 위해서, 사용한 방법(순서)은 아래와 같다.

  1. string을 char[]로 변경한다.
  2. char[index]로 접근하여 값을 변경한다.
  3. 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

 

반응형

+ Recent posts