문자열
- 모든 문자열은 System.String로부터 상속
- 닷넷에서 string객체는 한번 인스턴스화가 되면 불편 -> StringBuilder사용
string선언
- 다른 참조형과 다르게 new연산자 이용X
- 모든 string형은 유니코드
문자열 길이
- 객체명.Length
- 읽기전용
문자열의 각 요소 접근하기
- 인덱서(indexer) : 문자열을 배열처럼 취급
- 읽기 전용
문자열의 추가
- Insert : 지정위치에 문자열추가
- Concat. + : 문자열합치기
- 자기자신에게 영향X
대소문자 변환
- ToLower : 소문자로 치환
- ToUpper : 대문자로 치환
공백 문자열 지우기
- Trim, TrimStart, TrimEnd
- 공백삭제
문자열치환
- Replace
- 문자열 내에 원하는 문자열을 바꾸고자 하는 문자열로 치환
문자열 검색, 추출
- IndexOf, LastIndexOf : 문자열 검색, 찾고자하는 문자열의 첫번째 글자 위치값 리턴 (0부터시작)
- Substring : 문자열추출
문자열 포맷지정
- Console.WriteLine()에서 사용한 양식 문자열과 동일
- String.Format();
문자열 분할
- Split
- 구분자를 중심으로 문자열을 분할, 배열 형태로 반환
Equals
- 두문자열이 같은지 비교
지정문자열 삭제
- Remove
public static void stringMethod()
{
//문자열 비교
string str1="ABC";
string str2="ABC";
if(str1.Equals(str2))
Console.WriteLine("동일");
else
Console.WriteLine("다름");
//문자열삭제
string str3 = "나는 문자열입니다.";
Console.WriteLine(str3.Remove(3,4)); //3위체에서부터 4개 삭제
//양식문자열
str = String.Format("{0,10}","ABC"); //콘솔이 아닌 웹등에서 사용용이, 사용법은 WriteLine과 같음.
Console.WriteLine(str); //콘솔에서는 WriteLine 사용
Console.WriteLine(String.Format("{0:f2}",1520));
//문자열 일정문자단위로 분리
string csv = "강남길, 최지우, 김희선,하늘이";
string[] result;
result = csv.Split(',');
for(int i=0; i<result.Length;i++)
Console.WriteLine(result[i].Trim());
//문자열길이, 복제. 비교
str = "가나다라마바사";
Console.WriteLine("문자열 : {0}", str);
Console.WriteLine("문자열 길이 : {0}", str.Length);
Console.WriteLine("문자열 복제 : {0}", str.Clone());
Console.WriteLine("문자열 비교 : {0}", str.Equals("ABCDE"));
//Indexer
char firstChar = str[0];
Console.WriteLine("첫문자 : {0}", firstChar); // 결과 : 가
//문자열 추가
str2="추가문자열";
str = str.Insert(0, str2); //0번째 위치에 str2문자열 추가
Console.WriteLine(str);
//문자열 합침
str2 = String.Concat("가","마","사");
Console.WriteLine(str2);
str2 = String.Concat(str,"마","사");
Console.WriteLine(str2);
str2 = str2 + str;
Console.WriteLine(str2);
//대소문자 변환
str = "Hi~ Hong~";
Console.WriteLine(str.ToUpper());
Console.WriteLine(str.ToLower());
Console.WriteLine(str);
//문자열 좌/우 공백제거
str = " 잘 살아 보세 ";
Console.WriteLine(">" + str.TrimStart() + "<") ;
Console.WriteLine(">" + str.TrimEnd() + "<");
Console.WriteLine(">" + str.Trim() + "<");
Console.WriteLine(">" + str.TrimStart().TrimEnd() + "<");
//문자열 치환
str = "Hello~";
Console.WriteLine(str);
Console.WriteLine(str.Replace("~", "..."));
//문자열 검색, 0부터 시작. 해당하는 문자열의 첫번째 위치값 리턴
Console.WriteLine(str.IndexOf("녕하"));
str = "I Love You~";
//문자열 추출
Console.WriteLine(str.Substring(2)); //2번째위치부터 끝까지
Console.WriteLine(str.Substring(2,4));
}
ToCharArray
- 문자열을 Char형의 배열 형식으로 반환합니다
public static void ToCharArray_Test()
{
string str = "012wxyz789";
char[] arr;
arr = str.ToCharArray(3, 6); //3번째 위치에서 6개의 글자를 추출해 배열방에 각각 넣는다.
Console.Write("The letters in '{0}' are: '", str);
Console.Write(arr); //배열방 출력시 해당내용 출력
for(int i=0;i<arr.Length;i++) //각각의 배열방에도 들어가 있음.
Console.WriteLine(arr[i]);
Console.WriteLine("'");
char[] array;
array = str.ToCharArray(); //인자를 써주지 않으면 모든 문자 배열에 집어넣음
Console.WriteLine("Each letter in '{0}' is:", str);
Console.WriteLine(array);
foreach (char c in arr)
Console.WriteLine(c);
}
System.Text.StringBulider
- 닷넷에서 String클래스를 이용한 문자열 처리는 비효율적
- 대형 문자열이나 잦은 문자열 변경시
- 대부분의 문자열 관련 함수들이 String 인스턴스를 새로 생성시켜 반환
StringBulider sb = new StringBulider("ABC");
- StringBuilder.Capacity : 객체내에 문자열 버퍼 크기
- StringBuilder.Length : 문자열 길이
public static void StringBuilderTest()
{
StringBuilder sb = new StringBuilder("I am a Boy", 18);
//가용량을 적어주지 않으면 기본 용량은 16이고, 기본 최대 용량은 Int32.MaxValue
Console.WriteLine(sb.ToString());
Console.WriteLine(sb.Length);
Console.WriteLine(sb.Capacity);
Console.WriteLine(sb.MaxCapacity);
Console.WriteLine(sb.Insert(0,"삽입"));
Console.WriteLine(sb.Remove(0,2));
Console.WriteLine(sb.Append("추가문자열"));
Console.WriteLine(sb.Append(5000));
Console.WriteLine(sb.AppendFormat("{0,10}","end"));
Console.WriteLine(sb[0]);
sb[0] = 'i';
Console.WriteLine(sb[0]);
Console.WriteLine(sb.ToString().Replace(" ",""));
Console.WriteLine(sb.ToString().IndexOf("Boy"));
}