2015-07-24 11 views
6

Ich habe eine Zeichenfolge, die Zahlen hat.Wie zu analysieren String mit '+' Symbol

Ich habe einen Code wie diese,

String tempStr = "+123"; 
    NumberFormat numformat = NumberFormat.getNumberInstance(); 
    numformat.setParseIntegerOnly(true); 
    try { 
     int ageInDays = Integer.parseInt(tempStr); 
     System.out.println("the age in days "+ageInDays); 
    } catch (NumberFormatException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Es funktioniert gut für die Nummer mit negativen symbols.But ich es nicht mit ‚+‘ Symbol für Nummer tun kann. Es löst NumberFormatException.

Wie kann ich also eine Zahl mit ‚+‘ Symbol aus einer Zeichenfolge analysieren?

+5

Offensichtlich, da Java 7 können Sie 'Integer.parseInt tun ("+ 123");'. Ihr Code scheint auch für mich zu funktionieren, aber ich verwende Java 8. Vielleicht möchten Sie sich diese [Q & A] ansehen (http://stackoverflow.com/questions/2089751/parse-number-with-positive- Negative-Präfix-von-String-in-Java) für weitere Details – MadProgrammer

+2

ersetzen Sie das "+" Zeichen mit einem Leerzeichen oder trimmen Sie es. Technisch ist -123 eine Zahl, aber +123 ist keine Zahl. 123 ist die positive Zahl. – Srihari

Antwort

4

Im Fall, dass Sie verwenden Java 7 oder höher Ich würde empfehlen, java.lang.Long verwendet wird; oder java.lang.Integer; (Wenn Sie sicher sind, dass Sie Ganzzahlen analysieren müssen).

Es funktioniert in beiden Fällen.

Später bearbeiten: Ich habe nicht gesehen, dass Sie Integer.parseInt wurden mit();

Daher gehe ich davon aus, dass Sie Java 6 oder weniger haben.

In diesem Fall versuchen Sie folgendes Verfahren vor der Zeile mit Integer.parseInt(tempStr); Aufruf der + im Falle zu entfernen besteht es:

private static String removePlusSignIfExists(String numberAsString) { 
    if(numberAsString == null || numberAsString.length() == 0){ 
     return numberAsString; 
    } 

    if(numberAsString.charAt(0) == '+'){ 
     return numberAsString.substring(1, numberAsString.length()); 
    } else { 
     return numberAsString; 
    } 
} 
+1

Haben Sie es in Java 6 versucht? Nicht alle von uns bekommen die neuesten und besten ... – MadProgrammer

+0

Ich muss zugeben, dass ich es in Java 7 und 8 versucht habe. Ich habe das Java 6 SDK seit mehr als einem Jahr nicht – Flowryn

+0

Nach den Dokumenten, 'Long .parseLong' wird erst ab Version 7 funktionieren. Es hilft also in diesem Fall nicht, da 'Integer.parseInt' genauso gut funktioniert, beginnend mit v.7 – sstan

2

Diese Funktion grundsätzlich "+" mit "ersetzt", eine leere Zeichenfolge, also "+ 12 + 3" wird zurückgeben.

public int parseInt(String text) { 
    return Integer.parseInt(text.replaceAll("+", "")); 
} 

Ein Beispiel dafür, wie diese zu verwenden ist

System.out.println(parseInt("+123")); //Returns 123 

ich das half hoffen!