2012-01-05 7 views
1

나는 VIN 번호를 유용한 정보로 디코딩하려고 노력하고 있으며, 나라에 대해 이중 문자 (EG : SA-SM은 영국)의 범위를 제공합니다. SG가 SA와 SM 사이에 있는지 확인하려면 어떻게합니까? 16 진수에 대해서 생각해 보았습니다. 그러나 과거의 것이기 때문에 16 진수로 변환 할 수는 없습니다.문자열이 두 글자 사이에 있는지 확인하십시오.

답변

6
if (String.Compare("SG","SA") > 0 && String.Compare("SG","SM") < 0) 
{ // SG between SA and SM 
} 

는 경우를 무시

if (String.Compare("SG","SA",true) > 0 && String.Compare("SG","SM",true) < 0) 
{ // SG between SA and SM 
} 

또한 CurrentCulture, CurrentCultureIgnoreCase, InvariantCulture, InvariantCultureIgnoreCase, 서수, OrdinalIgnoreCase 중 하나 (msdn docs)

을 사용할 수 있습니다
if (String.Compare("SG","SA",CurrentCultureIgnoreCase) > 0 && String.Compare("SG","SM",CurrentCultureIgnoreCase) < 0) 
{ // SG between SA and SM 
} 
+0

굉장, 고마워! –

+0

문자열에는 또한 'CompareOrdinal' 메소드가 있습니다. 문자열에 문자와 숫자가 모두 포함 된 경우 (vin이 해당) 잘 작동합니다. 행운을 빕니다. – Hogan

2

숫자를 사용하라고한다면 16 진수 만이 기본이 아닙니다.

var str = "SK"; 
var base26 = 26*(str[0]-'A')+(str[1]-'A'); 

두 문자열의 길이가 같으면 문자열을 사전 식으로 비교할 때 아무런 문제가 없습니다.

+0

소문자'a'가 있으면 재미있을 것입니다 : D – Hogan

+0

@Hogan 소문자 ''a ''는 어디에서 왔는가? 문자열을''SK "'로 초기화했다면? :) :) :) 농담은 제쳐두고 제쳐두고, 나는 당신이 좋은 점을 제기했다고 생각합니다. 문자열은 대문자로 변환해야하고, 기본 -2로 변환하기 전에 문자 만 포함하도록 확인해야합니다. – dasblinkenlight

+0

그래, 그게 내 포인트 야 - 롤 - 너 - 자신의 재미 있지만 'String.Compare'는 이미 작성된 훨씬 더 많은 능력을 제공합니다. – Hogan

0

는이 방법을 시도해보십시오

string test= "SASGSM"; 
if(test.IndexOf("SG") > -1) { 

//your action 

} 
+2

그는 "~ 사이"가 의미하는 바가 아닙니다. –

+1

예, 그는 문자열 사이의 문자 그대로의 문자가 아닌 "사이의 범위"에 대해 말하고 있습니다. –

3
value[0] == 'S' && value[1] >= 'A' && value[1] <= 'M' 
+0

이것도 작동합니다 ... 감사합니다! –

관련 문제