티스토리 뷰
반응형
Language-Culture Codes
국가별 언어코드에서 대한민국은 ko-KR
, 북한은 ko-KP
로 표현됩니다. 여기서 앞 ko는 언어코드(한글)을 의미하며 KR, KP는 국가/지역코드로 각각 대한민국(Republic of Korea), 북한(Democratic People's Republic of Korea)을 의미합니다. 다른 예시로 영어-미국(United State)은 en-US
, 영어-영국(Great British)은 en-GB
를 사용합니다.
C#에서는 이러한 언어, 국가/지역 코드를 바탕으로 문자열을 비교할 수 있습니다. 문자열을 비교할 때 StringComparison 매개변수를 통해서 언어, 국가/지역의 특수성을 어떻게 반영할 지 결정할 수 있습니다.
StringComparison 열거형
- Ordinal: 언어, 국가/지역 모두 무시하고 유니코드 바이너리 값을 단순 비교합니다.
다른 옵션에 비해 비교적 성능이 뛰어납니다. 언어, 국가/지역에 따른 특수성을 고려하지 않는다면 이 옵션을 사용하세요. - InvariantCulture: 현재 사용자의 언어, 국가/지역을 무시하며 영어(CultureInfo("en"))를 바탕으로 비교합니다.
예를들어 라틴어 'Æ'(U+00C6)
는 영어 알파벳에 포함되지 않는 문자입니다. 영어에서는 'Æ'를 A와 E의 합자로 간주합니다. 따라서 InvariantCulture를 사용하면 라틴어 'Æ'와 알파벳 "AE"는 같은 문자로 취급합니다. - CurrentCulture: 현재 사용자의 언어, 국가/지역의 특수성을 모두 고려하여 비교합니다.
예를들어 현재 사용자의 지역이 덴마크(CultureInfo("da-DK"))라면 라틴어 'Æ'와 알파벳 "AE"는 다른 문자로 취급됩니다. 덴마크에서는 라틴어 'Æ'를 별도의 문자로서 사용하기 때문입니다.
언어, 국가/지역의 특수성을 고려하지 않는다면 StringComparison.Ordinal을 사용하세요. 만약 E-book 리더와 같은 애플리케이션을 개발한다면 언어, 국가/지역의 특수성은 상당히 중요합니다. 따라서 이 경우에는 StringComparison.CurrentCulture를 사용해야합니다. StringComparison.InvariantCulture는 영어권에서 사용하는 프로그램을 개발하지만 국가/지역의 특수성은 무시할 때 사용하게 됩니다.
References
- System.String : https://docs.microsoft.com/en-us/dotnet/api/system.string?view=net-6.0
- System.String.IndexOf : https://docs.microsoft.com/en-us/dotnet/api/system.string.indexof?view=net-6.0#system-string-indexof(system-string-system-stringcomparison)
- System.StringCompare : https://docs.microsoft.com/en-us/dotnet/api/system.stringcomparer?view=net-6.0
- Best practices for comparing strings in .NET: https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings
'Others' 카테고리의 다른 글
[C#] Object Clone (0) | 2023.05.24 |
---|---|
[C#] CallerMemberName Attribute (0) | 2023.05.19 |
[Mail] SMTP 프로토콜 (0) | 2022.07.07 |
OIDC(OpenID Connect)와 OAuth 2.0 (0) | 2021.07.22 |
Token 기반 인증 vs Cookie 인증 (0) | 2021.07.22 |
서버 하드웨어 구성 (0) | 2021.07.16 |
실무에서 TDD의 장담점과 의사결정 (0) | 2021.01.07 |
[AndroidStudio] Code Folding (0) | 2020.12.16 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- ios
- c#
- ASP.NET Core
- .NET Standard
- Xamarin.iOS
- Xamarin.Forms
- VisualStudio
- WPF
- TypeScript
- Android
- flutter
- Vue
- Xamarin.Forms 요약
- StringComparison
- Xamarin
- React
- npm
- MS SQL
- Xamarin.Forms eBook
- material-ui
- Total
- Today
- Yesterday