string (System.String)
[System.Runtime.InteropServices.ComVisible(true)] public sealed class String : ICloneable, IComparable, IComparable<string>, IConvertible, IEquatable<string>, System.Collections.Generic.IEnumerable<char>
- CompareTo, Compare, CompareOrdinal
- 현재 문화권, 대소문자 구분
// 문자열 생성
// new string(char, count): 문자를 count번 찍은 문자열 생성
// new string(char[]), new string(char*)도 가능하다.
string si = "Heroes of the Storm";
// 널과 빈 문자열
// si가 공백 문자열이면 true, 아니면 false
Console.WriteLine(si == "");
Console.WriteLine(si == string.Empty);
Console.WriteLine(si.Length == 0);
Console.WriteLine();
// si가 null이면 true, 아니면 false
Console.WriteLine(si == null); // null 판정은 이 방법 뿐
Console.WriteLine();
// si가 공백 문자열이거나 null이면 true
Console.WriteLine(string.IsNullOrEmpty(si));
Console.WriteLine();
// 문자열 안의 문자에 접근
// si의 2번째 색인 위치에 접근
Console.WriteLine(si[2]);
// si의 모든 문자에 접근
foreach (char c in si)
{
Console.Write(c);
}
Console.WriteLine('\n');
// 문자열 내부 검색
// 기본값: 문화권 감지(현재 문화권), 대소문자 구분
string str = "heroes";
// si가 str로 시작하면 true
Console.WriteLine(si.StartsWith(str));
// si가 str로 끝나면 true
Console.WriteLine(si.EndsWith(str));
// si가 str을 포함하면 true
Console.WriteLine(si.Contains(str));
// si가 str을 포함하면 해당 인덱스를, 없다면 -1 반환
Console.WriteLine(si.IndexOf(str));
// IndexOf와 같지만 뒤에서 앞으로 검색함
Console.WriteLine(si.LastIndexOf(str));
Console.WriteLine();
// Contains는 옵션 지정이 불가능 함
// StartsWith, 문화권 감지(문화권 불변), 대소문자 구분 무시
Console.WriteLine(si.StartsWith(str, StringComparison.InvariantCultureIgnoreCase));
// IndexOf, 10번째 인덱스부터, 문화권 감지(현재 문화권), 대소문자 구분 무시
Console.WriteLine(si.IndexOf(str, 10, StringComparison.CurrentCultureIgnoreCase));
Console.WriteLine();
// 문자열에서 문자 검색
string charset = "op";
// si가 charset에서 포함하는 문자가 있다면 인덱스를 반환
Console.WriteLine(si.IndexOfAny(charset.ToCharArray()));
// IndexOf와 같지만 뒤에서 앞으로 검색함
Console.WriteLine(si.LastIndexOfAny(charset.ToCharArray()));
Console.WriteLine();
// 문자열 조작
// string은 불변이 객체이므로 문자열을 조작하는 것은 새로운 스트링 인스턴스를 생성하는 것임
// 문자열 잘라내기
Console.WriteLine(si.Substring(0, 5));
Console.WriteLine(si.Substring(3, 5));
Console.WriteLine(si.Substring(3));
Console.WriteLine();
// 문자열 삽입
Console.WriteLine(si.Insert(5, "___HI!_I'M_HERE!___"));
// 문자열 제거
Console.WriteLine(si.Remove(5, 10));
Console.WriteLine();
// 문자열을 길이에 맞추기 - 만약 주어진 문자열이 더 길면 변화 없음
Console.WriteLine(si.PadLeft(50)); // 왼쪽을 채워서 길이에 맞춤, 기본값은 빈칸
Console.WriteLine(si.PadLeft(50, '_')); // 왼쪽, '_'으로 채움
Console.WriteLine(si.PadRight(50, '-')); // 오른쪽, '_'으로 채움
Console.WriteLine();
// 문자열에서 지정된 문자 지우기 (기본값은 공백 문자(빈칸, 탭, 개행 등)의 제거)
string trimStr = " a b c \t\r\n ";
Console.WriteLine("[{0}]", trimStr.TrimStart()); // 앞쪽만
Console.WriteLine("[{0}]", trimStr.TrimEnd()); // 뒤쪽만
Console.WriteLine("[{0}]", trimStr.Trim()); // 양쪽 모두
Console.WriteLine();
// 문자열에서 지정된 문자 대체하기
Console.WriteLine(si.Replace(" ", "__"));
Console.WriteLine(si.Replace(" ", ""));
Console.WriteLine();
// 문자열의 분할과 결합
string[] splitedWords = si.Split();
foreach (var item in splitedWords)
{
Console.Write("{0}_", item);
}
Console.WriteLine();
// 결합(구분자 적용)
Console.WriteLine(string.Join("+", splitedWords));
// 결합(구분자 미적용, operator+와 같음)
Console.WriteLine(string.Concat(splitedWords));
Console.WriteLine();
// String.Format과 복합 서식 문자열(composite format string)
string composite = "It's {0} degrees in {1} on this {2} morning";
Console.WriteLine(composite, 35, "Perth", DateTime.Now.DayOfWeek);
// 보간된 문자열을 통한 출력
Console.WriteLine($"It's hot this {DateTime.Now.DayOfWeek} morning");
// 서식 항목 (쉼표와 최소 너비 수치, 콜론과 서식 문자열)
composite = "Name = {0, -20} Credit Limit = {1, 15:C}";
Console.WriteLine(string.Format(composite, "Genji", 5000));
// == Console.WriteLine(composite, "Genji", 5000);
Console.WriteLine(string.Format(composite, "Hanjo", 200000));
// == Console.WriteLine(composite, "Hanjo", 200000);
Console.WriteLine();
// 문자열 상등 비교
// 기본값: 서수 비교, 대소문자 구분
Console.WriteLine(charset == str);
// 서수 비교, 대소문자 구별 무시
Console.WriteLine(string.Equals("foo", "FOO", StringComparison.OrdinalIgnoreCase));
Console.WriteLine();
// 문자열 순서 비교
// 기본값: 문화권 감지, 대소문자 구분
// 앞 문자열이 뒷 문자열보다 빠르면 -1, 같으면 0, 늦으면 1
Console.WriteLine("Boston".CompareTo("Austin"));
Console.WriteLine("Boston".CompareTo("Boston"));
Console.WriteLine("Boston".CompareTo("Chicago"));
Console.WriteLine("Boston".CompareTo("BOSTON"));
// 대소문자 구분 없음
Console.WriteLine(string.Compare("Boston", "BOSTON", true));
'C#' 카테고리의 다른 글
[C#] TimeZoneInfo (1) | 2023.08.11 |
---|---|
[C#] TimeZone (1) | 2023.08.10 |
[C#] DateTime & DateTimeOffset (0) | 2023.07.06 |
[C#] TimeZoneInfo (2) | 2023.07.05 |
[C#] TimeZone (1) | 2023.07.04 |
[C#] TimeSpan (1) | 2023.07.01 |
[C#] Encoding (1) | 2023.06.30 |
[C#] StringBuilder (0) | 2023.06.27 |