2016-02-24 2 views
0

Я пытаюсь создать функцию, которая позволит мне определить, является ли VALUE строки (лексикографической) между двумя другими строками. Может ли кто-нибудь проверить это и сообщить мне, где я ошибся? пожалуйста, имейте в виду, что я относительно новичок в C#.Является ли значение строки между двумя другими строками?

public static bool WithinRange(string pstrLowEnd, string pstrHighEnd, string pstrNum) 
    { 
     bool lbInclusive = false; 

     if (pstrLowEnd <= pstrNum && pstrNum <= pstrHighEnd) 
     { 
      lbInclusive = true; 
     } 

     return lbInclusive; 
    } 

Ошибка генерируется в том, что < = и => не может быть применен к строке и строки. Я надеюсь, что есть легкое исправление, но пока у меня его нет в моем банке знаний.

Спасибо!

+0

строк содержат номера? –

+3

Я этого не понимаю. Можете ли вы привести примеры того, какие значения параметров должны возвращать true и которые должны возвращать false? – Jens

+0

они могут ... например lowEnd может быть 333 и highEnd может быть 333ZZ. если число, о котором идет речь, было 333AB, это должно быть правдой, где 343AB будет ложным – Gazrok

ответ

4

Вы можете использовать string.CompareTo(), этот метод возвращает целое число, указывающее, лексическую связь между этими двумя строками:

public static bool WithinRange(string pstrLowEnd, string pstrHighEnd, string pstrNum) 
{ 
    bool lbInclusive = false; 

    if (pstrNum.CompareTo(pstrLowEnd) >= 0 && pstrNum.CompareTo(pstrHighEnd) <= 0) 
    { 
     lbInclusive = true; 
    } 

    return lbInclusive; 
} 

Или просто:

return pstrNum.CompareTo(pstrLowEnd) >= 0 && pstrNum.CompareTo(pstrHighEnd) <= 0; 
+0

Чтобы понять магический vodoo https://msdn.microsoft.com/en-us/library/system.string.compare%28v=vs.110%29.aspx –

+0

Это работает как шарм, спасибо вам большое! ! – Gazrok

0

Вы можете заменить a < b на string.Compare(a,b)==-1 для строк, и он должен скомпилировать (<= будет compare <= 0).

Смежные вопросы