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.