Проверьте, находится ли строка между двумя буквами - PullRequest
1 голос
/ 05 января 2012

Я работаю над декодированием номеров VIN в полезную информацию, и для страны они дают диапазон двойных букв (например, SA-SM - Великобритания). Как проверить, что SG находится между SA и SM? Я думал о гексе, но он не может быть преобразован в гекс, потому что он проходит мимо E.

Ответы [ 4 ]

6 голосов
/ 05 января 2012
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, Ordinal, OrdinalIgnoreCase ( msdn документы )

if (String.Compare("SG","SA",CurrentCultureIgnoreCase) > 0 && String.Compare("SG","SM",CurrentCultureIgnoreCase) < 0)
{  // SG between SA and SM
}
3 голосов
/ 05 января 2012
value[0] == 'S' && value[1] >= 'A' && value[1] <= 'M'
2 голосов
/ 05 января 2012

Если вы настаиваете на использовании числа, гекс - не единственная база: как насчет базы-26?

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

Нет ничего плохого в сравнении лексикографических строк, если обе строки имеют одинаковую длину.

0 голосов
/ 05 января 2012

Попробуйте так:

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

 //your action

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...