2011-02-25 4 views

답변

3

이제는 더 명확 해졌습니다. client.namename에 대한 대소 문자를 구별하지 않는 검색입니다. nameclient.name에 포함되어 있으면 true입니다. 국제 편지 (분명히 "국제 편지"가 존재하지 않기 때문에 분명히합니다. 나는 당신과 다른 문화의 편지를 의미합니다. 고전적인 예는 터키어 문화입니다. http://www.i18nguy.com/unicode/turkish-i18n.html, 부분은 Turkish Has An Important Difference입니다) 그것. 이를 수행하는 "올바른 방법"은 client.name.IndexOf(name, StringComparison.CurrentCultureIgnoreCase) != -1입니다. StringComparison.CurrentCultureIgnoreCase 대신 StringComparison.InvariantCultureIgnoreCase을 사용할 수 있습니다. ToLower과 같은 트릭을 사용해야 할 경우, 비교의 양쪽에 ToUpper을 더 사용하는 것이 더 좋습니다 (StringComparison.*을 더 사용하는 것이 더 좋습니다).

+0

매우 흥미 롭습니다. –

1

나에게 LINQ 것 같은데 제발 설명 할 수 있습니다.

I 해요 정말 최신 .NET에 요즘,하지만 난 client 변수의 ToString 속성이 대소 문자를 구분하지 일치 누구의 name 재산 client 객체를 찾고 같은 것을 읽을 것, 동안 SQL에서 WHERE foo is like '%:some_value%'과 매우 유사합니다. 내가 옳다면, btw, client은이 인스턴스에서 끔찍한 변수 이름입니다.

1

이것은 이상한 코드입니다. 클라이언트 객체에 대해 좀 더 알면 좋을 것입니다. 본질적으로 클라이언트 객체의 대소 문자를 구분하지 않는 이름 값에 클라이언트 객체의 대소 문자를 구분하지 않는 값 (문자열)이 있는지 확인합니다. 따라서 클라이언트 이름에 본질적으로 클래스 자체의 문자열 이름이 포함되어있는 경우.

1

.ToLower()는 모든 소문자로 동일한 문자열을 반환합니다. 기본적으로이 문은 name.ToLower()가 client.name.ToLower() 내의 모든 위치에 포함 된 경우 true를 반환합니다.

//If:<br/> 
client.name = "nick, bob, jason"; 
name = "nick"; 
//Then:<br/> 
client.name.ToLower().Contains(name.ToLower()); 
//would return true 
관련 문제