아래는 간단한 string 사용법을 익힐 수 있는 예제들이다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace String_Exercise
{
public class Program
{
static void Main(string[] args)
{
string s1 = " Good Morning. ";
//모든 문자열 대문자로 바꾸기.
//모든 문자열 소문자로 바꾸기.
//-를 왼쪽에 채워서 20자 만들기.
//-를 오른쪽에 채워서 20자 만들기.
//5번째부터 제거
//5번째부터 8글자 제거
//양쪽 공백 제거
//오른쪽 공백 제거
//왼쪽 공백 제거
//'G'를 'S'로 바꾸기
//5번째 이후를 남기기 (0~4번째 제거)
//5번째부터 8자 남기기
//2번째에 'uu' 삽입하기
//"o"를 포함하고 있나?
//왼쪽부터 첫 번째 'o'위치.(없으면 -1)
//마지막 'r'이 존재하는 위치
//문자열의 길이(공백포함)
//공백(" ")을 기준으로 s1을 분리.(먼저 공백제거)
//문자열의 문자 타입의 배열로 만든다.(먼저 공백제거)
//문자 타입의 배열을 문자열로 바꾼다.
string[] keys = { "name", "age", "addr" };
string[] values = { "hong", "14", "Seoul" };
string [] keyval = new string[3];
//위의 주어진 조건에서 "name = hong", "age = 14", "addr = Seoul" 형태로 출력을 시켜보자.
//위의 조건 keyval에서, 떨어진 문자열을 분리자 '&'를 이용하여 붙여보자.
}
public static void Printf(string s)
{
Console.WriteLine(s);
}
}
}
난 이 문제를 풀면서 싱글쿼테이션(')과 더블쿼테이션(")의 차이를 알게됐다.
string s14 = s1.Insert(2,'uu');
string s14번 문제, 2번째에 'uu'를 삽입하는 곳에서 single quotation을 쓰게 되면 아래와 같은 아름다운 에러를 볼 수 있다.
문자 리터럴에 문자가 너무 많습니다.
오류 2 'string.Insert(int, string)'에 가장 일치하는 오버로드된 메서드에 잘못된 인수가 있습니다.
'2' 인수 : 'char'에서 'string'(으)로 변환할 수 없습니다.
따옴표 하나 잘못썼다고 무슨 에러가 세 개 씩이나 뜬다. 그만큼... 더 많은걸 배울 수 있다는 얘기! ㅠㅠ
이 에러메시지는 일단 single quotation은 char형식으로 쓰인다 하는 내용이다.
그리고 char로 쓰려면 문자 하나만 써라! 문자 리터럴?? 리터럴이 문자인데..? 역전앞이구먼... 여튼.. char은 한 문자만 들어간다!
그리고 Insert 메서드는 string형식만 지원한다. 그러니깐 single quotation을 double quotation으로 변경해라. 이런 말이다. 일례로 Replace 메서드는 char형식과 string형식을 모두 지원한다. 그래서 string s11 = s1.Replace("g", "s"); 이런식으로 써도 무방하지만, char형식과 string형식을 혼용해서 쓰게 되면 또 아름다운 에러에 직면하게 된다.
string s14 = s1.Insert(s, "uu");
이렇게 코드를 고치면 문제없이 돌아간다. ㅎㅎ
아래는 완성된 코드다.
using System;
using System.Linq;
namespace HEK_Exercise
{
public class Program
{
static void Main(string[] args)
{
string s1 = " Good Morning. "; Printf("s1 = " + s1);
//모든 문자열 대문자로 바꾸기.
string s2 = s1.ToUpper();Printf("s2 = " + s2);
//모든 문자열 소문자로 바꾸기.
string s3 = s1.ToLower(); Printf("s3 = " +s3);
//-를 왼쪽에 채워서 20자 만들기.
string s4 = s1.PadLeft(20, '-'); Printf("s4 = " + s4);
//-를 오른쪽에 채워서 20자 만들기.
string s5 = s1.PadRight(20, '-'); Printf("s5 = " +s5);
//5번째부터 제거
string s6 = s1.Remove(5); Printf("s6 = " + s6);
//5번째부터 8글자 제거
string s7 = s1.Remove(5, 8); Printf("s7 = " + s7);
//양쪽 공백 제거
string s8 = s1.Trim(); Printf("s8 = " + s8);
//오른쪽 공백 제거
string s9 = s1.TrimEnd(); Printf("s9 = " + s9);
//왼쪽 공백 제거
string s10 = s1.TrimStart(); Printf("s10 = " + s10);
//'G'를 'S'로 바꾸기
string s11 = s1.Replace("G", "S"); Printf("s11 = " + s11);
//5번째 이후를 남기기 (0~4번째 제거)
string s12 = s1.Substring(5); Printf("s12 = " + s12);
//5번째부터 8자 남기기
string s13 = s1.Substring(5, 8); Printf("s13 = " + s13);
//2번째에 'uu' 삽입하기
string s14 = s1.Insert(2, "uu"); Printf("s14 = " + s14);
//"o"를 포함하고 있나?
bool s15 = s1.Contains('o'); Printf("s15 = " + s15);
//왼쪽부터 첫 번째 'o'위치.(없으면 -1)
int s16 = s1.IndexOf('o'); Printf("s16 = " + s16);
//마지막 'r'이 존재하는 위치
int s17 = s1.LastIndexOf('r'); Printf("s17 = " + s17);
//문자열의 길이(공백포함)
int s18 = s1.Length; Printf("s18 = " + s18);
//공백(" ")을 기준으로 s1을 분리.(먼저 공백제거)
string[] s19 = s1.Trim().Split(' ');
for (int i = 0; i < s19.Length; i++)
{
Console.Write("'" + s19[i] + "'");
}
Console.WriteLine();
//문자열의 문자 타입의 배열로 만든다.(먼저 공백제거)
char[] s20 = s1.Trim().ToCharArray();
for (int i = 0; i < s20.Length; i++)
{
Console.Write("'" + s20[i] + "'");
}
Console.WriteLine();
//문자 타입의 배열을 문자열로 바꾼다.
string s21 = new string(s20); Printf("s21 = " + s21);
string[] keys = { "name", "age", "addr" };
string[] values = { "hong", "14", "Seoul" };
string [] s22 = new string[3];
//위의 주어진 조건에서 "name = hong", "age = 14", "addr = Seoul" 형태로 출력을 시켜보자.
for (int i = 0; i < keys.Length; i++)
{
s22[i] = keys[i] + "=" + values[i];
Console.WriteLine(s22[i]);
}
//위의 조건 keyval에서, 떨어진 문자열을 분리자 '&'를 이용하여 붙여보자.
string div = " & ";
string s23 = string.Join(div, s22); Printf("s23 = " + s23);
}
public static void Printf(string s)
{
Console.WriteLine(s);
}
public static void Printf(int s)
{
Console.WriteLine(s);
}
public static void Printf(bool s)
{
Console.WriteLine(s);
}
}
}
이 문제의 출처는 c#프로그래밍 기본기 익히기, 정보문화사, 25000, 조효은지음,
'Language > C#' 카테고리의 다른 글
[c#]ArrayList (0) | 2012.03.22 |
---|---|
[c#]char 사용법 (0) | 2012.03.20 |
[c#] params 키워드 사용법 (0) | 2012.01.20 |
c# 값타입으로 값을 전달하는 것과 참조타입으로 값을 전달하는 방법 (0) | 2012.01.05 |
c# 오류목록 정리 (0) | 2012.01.03 |