string str1 = new string('h', 5);
Console.WriteLine(str1);
// "hhhhh" 출력
영어의 경우 알파벳 하나는 유니코드 문자(char)로 인식되어서 반복 유니코드 문자를 만들고 싶을 때는 위와 같이 활용 가능하다.
다만 이번 과제인 스파르타 던전을 한국어로 만들 예정이기에 "하"와 같은 단어도 유니코드 문자 취급인지 알아봐야했다.
string str1 = new string('하', 5);
Console.WriteLine(str1);
// "하하하하하" 출력
확인해보니 상황에 따라 위의 코드는 작동이 될 수도 안 될 수도 있다고 한다..!
한국어의 경우 자음+모음으로 합쳐진 한 글자가 문자열 취급이 될 수도 있다는 것이다. 따라서 다른 방법으로 반복 문자를 만드는 방법을 찾아봤다.
string korean = string.Concat(Enumerable.Repeat("하", 5));
Console.WriteLine(korean);
// "하하하하하" 출력
위의 방법으로는 확실하게 출력이 가능하다는 것을 알았다. 하나씩 따져보자면
- Enumerable은 반복 가능한 시퀀스를 만들어주는 도구다. ( "하", "하", "하", "하", "하" ) 가 출력되도록 해준다. - string.Contact는 여러개의 문자열을 이어 하나의 문자열로 만들어주는 기능이다. 즉 ( "하","하", "하", "하", "하" )를 ("하하하하하")로 만들어준다.
string.Contact(Enumerable.Repeat("단어", 횟수)); // 한국어로 반복 시퀀스를 만들고 싶을 때 잊지말것!
Compare
[소문자 > 대문자] 이걸 잘 기억해두기!
string str1 = "Hello, World!";
string str2 = new string('h', 5);
Console.WriteLine(string.Compare(str1, str2));
// -1 출력
"Hello, World"와 "hhhhh"에 비교함수를 사용하면 알파벳 단위로 비교를 시작한다.
즉, 대문자 H와 소문자 h를 비교하게 되는 것인데 대문자가 소문자보다 값이 작게 정의되어 있다. 그럼 위의 코드를 분석해보면 str1이 str2보다 작다 = -1 출력! // 같으면 0, 크면 1 출력
ReadLine, Format
이거는 알아두면 유용히 사용할 것 같아서 잊지 않게 기록해두겠다.
Console.Write("당신의 이름은? ");
string name = Console.ReadLine();
Console.WriteLine(string.Format("나의 이름은 {0} 입니다.", name));
name에 정보를 넣기 위해 string name을 사용하고 Console.ReadLine();를 사용하면 사용자가 타이핑 해 입력한 값이 저장된다.
작성한 값을 다시 출력하기 위해서 Format문을 사용하면 되는데 위의 경우엔 한개의 답변이라서 {0}으로 작성했지만 이름과 나이 처럼 두개의 답을 출력 할 수도 있다.
string name = "John";
int age = 30;
string message = string.Format("My name is {0} and I'm {1} years old.", name, age);
// string message = $"My name is {name} and I'm {age} years old.";
// 둘 다 My name is JOhn and I'm 30 years old. 라고 출력
두 개의 답을 출력한 예시이다. 또한 아래 주석으로 달아놓은 것처럼 $"를 사용해도 같은 값이 나오니 참고해두면 좋을 것 같다.