2013-04-02 5 views
1

У меня есть простые сомнения. Было бы здорово, если бы кто-нибудь мне помог.сравнить два числовых значения строки

У меня есть две строки:

String string1 = "4"; // and 
String string2 = "04"; 

Оба эти значения равны, но как сравнить их в Java? У нас есть equals и equalsIgnoreCase для сравнения значений String alpha, аналогично, как сравнивать числовые значения.

+1

нового Integer (string1) == нового Integer (строка 2) – madhairsilence

+2

пожалуйста ... .equals() – msi

+2

@madhairsilence. Обратите внимание, что ваш метод не сработает, поскольку вы сравниваете два объекта «Integer» с помощью '==', который может считаться преступлением. –

ответ

17
Integer.parseInt("4") == Integer.parseInt("04") 

То есть это. Вы можете преобразовать числовую строку в целое число с использованием метода Integer.parseInt(String), который возвращает тип int. И тогда сравнение такое же, как 4 == 4.

+1

Не было бы этого переполнения, если числа длинны, чем то, что может удерживать Int –

9
Integer.valueOf(string1).equals(Integer.valueOf(string2)); 
+0

'valueOf (String)' внутренне вызывает 'parseInt (String)' и обертывает его. Сравнение результатов 'parseInt (String)' using '==' работает без бокса. –

6

Не забудьте BigInteger для очень длинных значений.

return new BigInteger(s1).compareTo(new BigInteger(s2)); 
0

Пропустив разбор его в междунар вообще обрабатывать сколь угодно большие числа, только сравнивая строки. В качестве бонуса он также работает для десятичных чисел (если нет конечных нулей, где вы, вероятно, можете сделать аналогичную вещь с привязкой к концу строки).

Вы можете omitt обивки, если вы уверены, что нет пробельных символов

String string1 = "4"; // and 
    String string2 = "04"; 

    String noLeadingZeroes1 = string1.trim().replaceFirst("^0+(?!$)", ""); 
    String noLeadingZeroes2 = string2.trim().replaceFirst("^0+(?!$)", ""); 

    System.out.println(noLeadingZeroes1.equals(noLeadingZeroes2)); 
Смежные вопросы