Проверьте, является ли строка числом в Android

У меня есть три текстовых поля, все из которых являются числами или десятичными числами.

Они принимаются как строки, которые позже преобразуются.

Однако я хочу проверить эти поля, чтобы принимались только числа или десятичные числа.

Какой самый простой способ убедиться, что эти поля содержат только символы 0-9.

Я бы предпочел оператор if, но любое решение было бы неплохо!


person user3411002    schedule 01.02.2015    source источник
comment
используйте это регулярное выражение ^\\d+(?:\\.\\d+)?$ .   -  person Avinash Raj    schedule 01.02.2015
comment
я помещаю его в оператор if?   -  person user3411002    schedule 01.02.2015


Ответы (4)


Используйте метод string.matches, который принимает регулярное выражение в качестве аргумента.

if(string.matches("\\d+(?:\\.\\d+)?"))
{
System.out.println("Matches");
}
else
{
System.out.println("No Match");
}
person Avinash Raj    schedule 01.02.2015
comment
Как бы я сказал, что не соответствует этой строке - person user3411002; 01.02.2015
comment
Что противоположно этому регулярному выражению, поэтому оно принимает только буквы, а не числа или десятичные числа. - person user3411002; 01.02.2015
comment
@AvinashRaj Я играл в некоторые сценарии без части без захвата ?: и не нашел никакой разницы. Не могли бы вы пролить свет на то, зачем нам это нужно? спасибо! - person Golden Thumb; 22.01.2017
comment
Привет @Дональд. Скорее всего, нам следует избегать захвата групп, если мы не хотим, чтобы персонажи находились внутри этой группы. Здесь было бы достаточно группы без захвата из-за проверки условий. И также обратите внимание, что если мы хотим сделать более одного шаблона необязательным, нам нужна группа (группа с крышкой или без). - person Avinash Raj; 23.01.2017
comment
Это не фиксирует отрицательные числа - person OlgaPp; 09.07.2020

Если вы ищете способ просто проверить, содержит ли строка цифры (поэтому проверьте целочисленные значения), используйте собственный TextUtils.isDigitsOnly(CharSequence str).

person Jasper de Vries    schedule 29.01.2020

Если вы раздуваете эти текстовые представления из xml, вы можете просто использовать:

android:inputType="number"
person instanceof    schedule 11.03.2016

вы можете преобразовать строку в целое число, и если строка содержит какие-либо символы, она покажет ошибку, чтобы вы могли узнать, содержит ли она какую-либо цифру

 String s = numen.getText().toString();
    try {
        int d = Integer.parseInt("d");

        Toast.makeText(this, d, Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this, "Wrong input please input valid detail ", Toast.LENGTH_SHORT).show();
    }
person Dev Shah    schedule 08.04.2021