Convertendo uma string em um número inteiro no Android


182

Como faço para converter uma string em um número inteiro?

Eu tenho uma caixa de texto onde o usuário insere um número:

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

E o valor é atribuído à sequência hello.

Quero convertê-lo em um número inteiro para obter o número digitado; será usado mais tarde no código.

Existe uma maneira de obter o EditTextpara um número inteiro? Isso pularia o intermediário. Caso contrário, a string para número inteiro ficará bem.


Respostas:


417

Veja a classe Integer e o parseInt()método estático :

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

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

Você precisará capturar, NumberFormatExceptionem caso de problemas durante a análise, portanto:

int myNum = 0;

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

1
Que tal usar o caminho de manuel abaixo? É mais seguro usar parseInt sobre valueOf?
Gabriel Fair

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

26

Use expressão regular:

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

saída: i = 1234;

Se você precisar da combinação do primeiro número, tente o código abaixo:

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

saída: i = 123;


13

Use expressão regular:

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

resultado:

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

Exatamente o que eu estava procurando.
Ahamadullah Saikat

9

Usar expressão regular é a melhor maneira de fazer isso, como já mencionado por ashish sahu

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

8

Experimente este código que está realmente funcionando.

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

6

A melhor maneira de converter sua string em int é:

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

5

Você deve ocultar String para flutuar. Está funcionando.

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

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

tv.setText(result); 

5

Você pode usar o seguinte para analisar uma string em um número inteiro:

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

(1) input: 12 então funcionará .. porque o textview assumiu esse número 12 como uma string "12".

(2) input: "abdul" então lançará uma exceção que é NumberFormatException. Então, para resolver isso, precisamos usar o try catch como mencionei abaixo:

  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());
       }

Você também pode consultar o seguinte link para obter mais informações: http://developer.android.com/reference/java/lang/Integer.html


4

Você também pode fazer uma linha:

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

Leitura da ordem de execução

  1. pegue a vista usando findViewById(R.id.button1)
  2. use ((Button)______)para lançar ViewcomoButton
  3. Ligue .GetText() para obter a entrada de texto do botão
  4. Chamada .toString()para converter o caractere variável em uma string
  5. Chamada .ReplaceAll()com "[\\D]"a substituir todos os caracteres não dígitos com "" (nada)
  6. Chame Integer.parseInt()grab e retorne um número inteiro fora da string Digit-only.

É uma quantidade enorme de código para uma linha (apenas minha preferência).
Patrick M

Sim, eu também não faria dessa maneira, era mais uma referência ao comentário "pule o intermediário" do OP.
Brett Moan

3

O método muito mais simples é usar o decodemétodo de Integerexemplo, por exemplo:

int helloInt = Integer.decode(hello);


2

Existem cinco maneiras de converter The First Way:

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

A segunda maneira:

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

A terceira via:

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

O quarto caminho:

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

O Quinto Caminho:

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

Poderia haver outras maneiras Mas é disso que eu lembro agora


Marque as partes do seu código como código; isso tornará a resposta mais legível!
U. Windl 5/03/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.