2012-03-30 18 views
49

jak przekonwertować ciąg na długi.Jak przekonwertować ciąg na długi

dla int ty

int i = 3423; 
String str; 
str = str.valueOf(i); 

tak jak go w inny sposób, ale z długo.

long lg; 
String Str = "1333073704000" 
lg = lg.valueOf(Str); 
+0

To jest duplikatem pytania: http://stackoverflow.com/a/2709269/108574 –

Odpowiedz

145

Jest to typowy sposób, aby to zrobić:

long l = Long.parseLong(str); 

Istnieje również ta metoda: Long.valueOf(str); Różnica jest taka, że ​​parseLong zwraca prymitywne long podczas valueOf zwraca new Long() obiekt.

+0

Dziękuję. utknąłem na lg.getLong zgodnie z [link] (http://developer.android.com/reference/java/lang/Long.html#getLong (java.lang.String)) – John

+0

'getLong' zwraca długi z właściwości systemu. Dlatego nie działa tak, jak się spodziewałeś. – Cristian

+0

Łatwo jest popełnić błąd zakładając, że ciąg wejściowy jest w oczekiwanej formie; "90.77" spowoduje wygenerowanie wyjątku ParseException. Więc nie ignoruj ​​wyjątku ParseException, ale obsłuż go dla swojego przypadku użycia. –

9

Metoda konwersji łańcucha na długą jest Long.parseLong. Modyfikacja przykład:

String s = "1333073704000"; 
long l = Long.parseLong(s); 
// Now l = 1333073704000 
+0

Dziękuję za poświęcony czas. – John

+0

serdecznie witamy ... – Lucifer

3

można także spróbować następujących,

long lg; 
String Str = "1333073704000" 
lg = Long.parseLong(Str); 
+0

Dziękujemy za poświęcony czas. – John

4
String s = "1"; 

try { 
    long l = Long.parseLong(s);  
} catch (NumberFormatException e) { 
    System.out.println("NumberFormatException: " + e.getMessage()); 
} 
1

Wykonaj:

long l = Long.parseLong(str); 

Jednak zawsze sprawdzić, str zawiera cyfry, aby uniknąć rzucania wyjątków. Na przykład:

String str="ABCDE"; 
long l = Long.parseLong(str); 

będzie wyjątek, ale to

String str="1234567"; 
long l = Long.parseLong(str); 

nie będzie.

2
import org.apache.commons.lang.math.NumberUtils; 

To zajmie null

NumberUtils.createLong(String) 
2

jeśli twoje wejście jest String to polecam Ci do przechowywania String na podwójne i następnie przekonwertować do podwójnej długości.

String str = "123.45"; 
Double a = Double.parseDouble(str); 

long b = Math.round(a); 
+0

Czy możesz również dodać, dlaczego uważasz, że jest to lepsze niż po prostu wywołanie 'parseLong()'? –

1

Zastosowanie parseLong(), np .:

long lg = lg.parseLong("123456789123456789"); 
+1

@Mogsdad Dzięki bro, za sugestię. Zostało to pokazane zbyt dziwnie w tekście. Teraz sprawiłeś, że naprawdę brzmi jak odpowiedź. –