2017-01-11 5 views
-3

мне нужно сравнить два string с с использованием C#, которые находятся в формате приведены ниже:Сравнивая 2 десятичных чисел в формате 1.0.1 с 1,0

numbers.numbers[.numbers]* 

Е.Г.

1.0 
1.0.0 
1.0.1 
1.2.34.5 

Пожалуйста, обратите внимание, что 1.0 должна быть равна 1.0.0, 1.00, 1.000.0.00 etc.- отставая все-нули Куски не учитываются.

Я стараюсь делать это с Decimal

string1 = "1.0"; 
string2 = "1.0.1"; 

if (Convert.ToDecimal(string1) <= Convert.ToDecimal(string2))  
{ 
    // Perfom some logic 
} 

но не удалось: когда я использую Convert.ToDecimal(string1) это дает мне

входной строки в ненадлежащем ошибки формата.

Может ли кто-нибудь помочь мне в этом.

+6

что '1.0.1'? Если вы попросите кого-то одолжить вам «1.0.1 $», сколько вы ожидаете получить? – fubo

+0

Хорошо, как сравнить такие цифры? – Skyrim

+0

Сначала вы должны определить порядок сортировки. В зависимости от этого вы можете использовать встроенную или настраиваемую сортировку. – fubo

ответ

1

Кажется, что вы ищете Version класса, не String:

Version v1 = new Version("1.0"); 
    Version v2 = new Version("1.0.1"); 

    if (v1 <= v2) { 
    //TODO: Put relevant code here 
    } 

Edit: В случае пользовательской логики, т.е. 1.0 == 1.0.0 == 1.0.0.0 = ... = 1.000.00 = ... вы должны реализовать его, например,

private static string TrimVersion(string value) { 
    string result = Regex.Replace(value, @"(\.0+)+$", ""); 

    if (result.Contains('.')) 
    return result; 
    else 
    return result + ".0"; 
} 

... 

Version v1 = new Version(TrimVersion("1.0")); 
Version v2 = new Version(TrimVersion("1.0.0")); 

if (v1 <= v2) { 
    //TODO: Put relevant code here 
} 
+0

Версия я уже пробовал. Однако он работает отлично или этот сценарий, но не подходит для сценария ниже, string1 = 1.0 string2 = 1.0.0. И у нас есть условие, как будто (string1 <= string2) – Skyrim

+0

@Skyrim: какой желаемый результат для сравнения «1.0» и «1.0.0»? –

+0

1.0 и 1.0.0 следует считать равными в условии IF. – Skyrim

1
string string1 = "1.0"; 
string string2 = "1.0.1"; 

var version1 = new Version(string1); 
var version2 = new Version(string2); 

var result = version1.CompareTo(version2); 

Результаты будут

result = 1 - version1 is greater 
result = -1 - version2 is greater 
result = 0 - both are equal 
+0

Хорошо, дайте мне попробовать. – Skyrim

+0

Будет ли вышеупомянутая логика считать «1.0» и «1.0.0» равной? – Skyrim

+0

При работе с версией в вашем случае «1.0» и «1.0.0» не равны. Что бы вы хотели вернуть? – Vijay