Conversione di una stringa in un numero intero su Android


182

Come faccio a convertire una stringa in un numero intero?

Ho una casella di testo Ho l'utente inserire un numero in:

EditText et = (EditText) findViewById(R.id.entry1);
String hello = et.getText().toString();

E il valore è assegnato alla stringa hello.

Voglio convertirlo in un numero intero in modo da poter ottenere il numero che hanno digitato; verrà usato più avanti nel codice.

C'è un modo per ottenere il EditTextnumero intero? Ciò salterebbe l'uomo di mezzo. In caso contrario, la stringa all'intero andrà bene.


Risposte:


417

Vedi la classe Integer e il parseInt()metodo statico :

http://developer.android.com/reference/java/lang/Integer.html

Integer.parseInt(et.getText().toString());

Dovrai prendere NumberFormatExceptionanche se in caso di problemi durante l'analisi, quindi:

int myNum = 0;

try {
    myNum = Integer.parseInt(et.getText().toString());
} catch(NumberFormatException nfe) {
   System.out.println("Could not parse " + nfe);
} 

1
Che ne dici di usare la via di manuel qui sotto? È più sicuro usare parseInt su valueOf?
Gabriel Fair,

46
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());

26

Usa espressione regolare:

String s="your1string2contain3with4number";
int i=Integer.parseInt(s.replaceAll("[\\D]", ""));

uscita: i = 1234;

Se hai bisogno della prima combinazione di numeri, dovresti provare sotto il codice:

String s="abc123xyz456";
int i=NumberFormat.getInstance().parse(s).intValue();

uscita: i = 123;


13

Usa espressione regolare:

int i=Integer.parseInt("hello123".replaceAll("[\\D]",""));
int j=Integer.parseInt("123hello".replaceAll("[\\D]",""));
int k=Integer.parseInt("1h2el3lo".replaceAll("[\\D]",""));

produzione:

i=123;
j=123;
k=123;

esattamente quello che stavo cercando.
Ahamadullah Saikat,

9

Usare l'espressione regolare è il modo migliore per farlo, come già accennato dal sahu ashish

public int getInt(String s){
return Integer.parseInt(s.replaceAll("[\\D]", ""));
}

8

Prova questo codice funziona davvero.

int number = 0;
try {
    number = Integer.parseInt(YourEditTextName.getText().toString());
} catch(NumberFormatException e) {
   System.out.println("parse value is not valid : " + e);
} 

6

Il modo migliore per convertire la stringa in int è:

 EditText et = (EditText) findViewById(R.id.entry1);
 String hello = et.getText().toString();
 int converted=Integer.parseInt(hello);

5

Dovresti convertire String in float. Funziona.

float result = 0;
 if (TextUtils.isEmpty(et.getText().toString()) {
  return;
}

result = Float.parseFloat(et.getText().toString());

tv.setText(result); 

5

È possibile utilizzare quanto segue per analizzare una stringa in un numero intero:

int value = Integer.parseInt (textView.getText (). toString ());

(1) input: 12 quindi funzionerà .. perché textview ha preso questo numero 12 come stringa "12".

(2) input: "abdul" quindi genererà un'eccezione che è NumberFormatException. Quindi, per risolvere questo problema, dobbiamo usare try catch, come ho menzionato di seguito:

  int tax_amount=20;
  EditText edit=(EditText)findViewById(R.id.editText1);
     try
       {

        int value=Integer.parseInt(edit.getText().toString());
        value=value+tax_amount;
        edit.setText(String.valueOf(value));// to convert integer to string 

       }catch(NumberFormatException ee){
       Log.e(ee.toString());
       }

È inoltre possibile fare riferimento al seguente collegamento per ulteriori informazioni: http://developer.android.com/reference/java/lang/Integer.html


4

Puoi anche farlo una riga:

int hello = Integer.parseInt(((Button)findViewById(R.id.button1)).getText().toString().replaceAll("[\\D]", ""));

Lettura dall'ordine di esecuzione

  1. afferrare la vista utilizzando findViewById(R.id.button1)
  2. usare ((Button)______)per lanciare il file ViewaButton
  3. Chiama .GetText() per ottenere l'inserimento di testo dal pulsante
  4. Chiama .toString()per convertire il Character Varying in una stringa
  5. Chiama .ReplaceAll()con "[\\D]"per sostituire tutti i caratteri non numerati con "" (niente)
  6. Chiama Integer.parseInt()grab e restituisce un numero intero dalla stringa di sola cifra.

È un sacco di codice per una riga (solo la mia preferenza).
Patrick M,

Sì, non lo farei neanche in questo modo, era più un riferimento al commento "salta l'uomo di mezzo" del PO.
Brett Moan,

3

Il metodo molto più semplice è usare il decodemetodo Integercosì per esempio:

int helloInt = Integer.decode(hello);


2

Esistono cinque modi per convertire The First Way:

String str = " 123" ;
int i = Integer.parse(str); 
output : 123

Il secondo modo:

String str = "hello123world";
int i = Integer.parse(str.replaceAll("[\\D]" , "" ) );
output : 123

La terza via:

String str"123";
int i = new Integer(str);
output "123 

La quarta via:

String str"123";
int i = Integer.valueOf(Str);
output "123 

La quinta via:

String str"123";
int i = Integer.decode(str);
output "123 

Potrebbero esserci altri modi, ma è quello che ricordo adesso


Contrassegnare le parti del codice come codice; ciò renderà la risposta più leggibile!
U. Windl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.