답변:
현재 문화권에 따라 ToLower는 예상치 못한 문화 고유의 소문자를 생성 할 수 있습니다. ınfo
i 대신 점없이 생성 info
하여 문자열 비교를 수행하는 등의 작업. 따라서 언어가 아닌 데이터에는 ToLowerInvariant를 사용해야합니다. 모국어 / 문자 집합 인 사용자 입력이있을 경우 일반적으로 ToLower를 사용하는 것이 유일한 시간입니다.
이 문제의 예는이 질문을 참조하십시오. C #-ToLower ()가 때때로 문자 "I"에서 점을 제거합니다.
나는 이것이 유용 할 수 있다고 생각한다.
http://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx
최신 정보
현재 문화권에 영향을받지 않는 예측 가능한 방식으로 문자열이 변경되는 경우 응용 프로그램에 의존하는 경우 ToLowerInvariant 메서드를 사용하십시오. ToLowerInvariant 메서드는 ToLower (CultureInfo.InvariantCulture)와 같습니다. 이 방법은 문자열 모음이 사용자 인터페이스 컨트롤에서 예측 가능한 순서로 나타나야 할 때 권장됩니다.
또한
... ToLower는 대부분의 장소에서 ToLowerInvariant와 매우 유사합니다. 문서는 이러한 방법이 터키 문화의 행동만을 변화시킬 것이라고 지적합니다. 또한 Windows 시스템에서 파일 시스템은 대소 문자를 구분하지 않으므로 사용이 더욱 제한됩니다.
http://www.dotnetperls.com/tolowerinvariant-toupperinvariant
hth
String.ToLower()
기본 문화권을 String.ToLowerInvariant()
사용하고 고정 문화권 을 사용합니다. 따라서 본질적으로 변하지 않는 문화와 서수 문자열 비교의 차이점을 묻습니다 .
ToLower
변형 을 논의하는 데 관련이 없습니다 . 순서 대 불변은 두 문자열의 "정렬 순서"만 변경하고 동일 비교는 변경하지 않습니다.
TL; DR :
"컨텐츠"(예 : 기사, 게시물, 댓글, 이름, 장소 등)를 다룰 때 사용하십시오 ToLower()
. "literals"(예 : 명령 줄 인수, 사용자 지정 문법, 열거 형이어야하는 문자열 등)로 작업 할 때는을 사용하십시오 ToLowerInvariant()
.
예 :
= 사용 ToLowerInvariant
잘못 =
터키어로 DIŞ
"외부"와 diş
"치아"를 의미합니다. 적절한 하부 케이싱은 DIŞ
입니다 dış
. 따라서 ToLowerInvariant
잘못 사용 하면 터키에 오타가있을 수 있습니다.
= 사용 ToLower
잘못 =
이제 SQL 파서를 작성하는 척하십시오. 어딘가에 다음과 같은 코드가 있습니다.
if(operator.ToLower() == "like")
{
// Handle an SQL LIKE operator
}
문화권을 변경할 때 SQL 문법은 변경되지 않습니다. 프랑스 인은 SÉLECTIONNEZ x DE books
대신에 글을 쓰지 않습니다 SELECT X FROM books
. 그러나 위의 코드가 작동하려면 터키 사람이 작성해야합니다 SELECT x FROM books WHERE Author LİKE '%Adams%'
(대문자 i 위의 점은 거의 볼 수 없음). 터키 사용자에게는 매우 실망 스러울 것입니다.