메소드( ) | 설명 |
---|---|
Contains | 인자로 전달된 문자열을 포함하고 있는지 여부(bool) |
IndexOf | 문자열을 포함하는 경우 그 위치를 반환, 포함하지 않으면 -1 반환 |
Startswith | 인자로 전달된 문자열로 시작하는지 여부(bool) |
EndsWith | 인자로 전달된 문자열로 끝나는지 여부(bool) |
Replace | 첫 번째 인자의 문자 또는 문자열을 두 번째 인자의 값으로 치환된 문자열을 반환 |
ToLower | 문자열을 소문자로 변환해서 반환 |
ToUpper | 문자열을 대문자로 변환해서 반환 |
Substring | 시작과 길이에 해당하는 만큼의 문자열을 반환 |
Split | 주어진 문자 또는 문자열을 구분자로 나뉜 문자열의 배열을 반환 |
Trim | 문자열의 앞뒤에 주어진 문자를 삭제하여 문자열을 반환. 문자가 지정되지 않으면 기본적으로 공백을 제거하여 반환 |
Format | 형식에 맞는 문자열을 생성해 반환 |
- 문제: '자축인묘진사오미신유술해' 중에서 여섯 글자를 받아 들여서 삼합이 성립하는지 검사하는 프로그램 만들기
다음 세 글자가 모두 있으면 삼합 성립 -> '해묘미', '인오술'
namespace StringPractice
{
class StringPractice
{
public void Run()
{
string str = GetString();
if (Find해묘미(str)) Console.WriteLine("해묘미 합입니다.");
else Console.WriteLine("삼합이 아닙니다.");
if (Find인오술(str)) Console.WriteLine("인오술 합입니다.");
else Console.WriteLine("삼합이 아닙니다.");
}
private bool Find해묘미(string str)
{
// str은 6자를 가지고 있다.
// 여기에 해, 묘, 미 세 글자가 포함되어 있으면 true를 반환, 그렇지 않으면 false 반환
if (str.Contains("해") && str.Contains("묘") && str.Contains("미"))
return true;
return false;
}
private bool Find인오술(string str)
{
string[] yos = new string[] { "인", "오", "술" };
foreach (string s in yos)
if (str.IndexOf(s) < 0) //-1을 반환 (안갖고 있음)
return false;
return true;
}
private string GetString()
{
while (true) //for( ; ;) 무한루프
{
Console.WriteLine("'자축인묘진사오미' 중에서 6자를 입력하시오.(순서 상관없음. 중복 가능)");
Console.Write("입력: ");
string str = Console.ReadLine();
if (str.Length != 6)
{
Console.WriteLine("6자가 아닙니다.");
continue;
}
else
return str;
}
}
}
internal class Program
{
static void Main(string[] args)
{
StringPractice sp = new StringPractice();
sp.Run();
}
}
}
ㄴ 단순하게 if ~else로만 로직을 고민했다면 매우 복잡한 프로그램으로 만들어졌을 것. String에서 제공하는 메서드를 적극 활용해서 효율적인 코드를 짜보는 연습이 필요하다.
📄참고자료
[인프런] c# 프로그래밍 기초 - 이교준