EditText中可能的验证,其inputType为:numberDecimal

时间:2015-12-11 10:15:31

标签: android

我有以下表格中的EditText

<EditText
        android:id="@+id/editTextNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_margin="10dp"
        android:ems="10"
        android:inputType="numberDecimal" />

稍后我使用输入创建BigDecimal-Calculations,并意识到可以在EditText中输入任何内容甚至是简单的点。所以我写了以下内容:

        EditText editTextNumber = (EditText) rootView.findViewById(R.id.editTextNumber);
        String number = String.valueOf(editTextNumber.getText());
        if (number.equals("") || number.equals(".")) {
            number = "1";
            editTextNumber.setText(number);
        }

因为我之前已经监督了这两个可能的例外,我想知道我是否已经在这个代码中监督了另一个错误的可能性,并且如果有一个&#34;更清洁的&#34;方式。

3 个答案:

答案 0 :(得分:2)

我使用这个功能。这并不考虑可能使用','而不是'。'的国际键盘。

public static boolean isNumeric(@Nullable String s)
{
    if (TextUtils.isEmpty(s)) return false;

    return s.matches("[-+]?\\d*\\.?\\d+");
}

答案 1 :(得分:1)

如果您不处理任何花车,TextUtils.isDigitsOnly()javadoc)可能会有所帮助。

答案 2 :(得分:1)

从editText处理数据或从任何其他来源填充​​的任何其他字符串是至关重要的,因为您可能永远不知道究竟是什么输入字符串

您可以编写以下代码或根据您的要求进行自定义

private boolean isValidString(String text){

        if (text == null) {
            return false;
        }
        if (text.trim().contentEquals("")) {
            return false;
        }

        if (text.trim().length() < 1) {
            return false;
        }

        if (text.trim().toLowerCase().contentEquals("null")) {
            return false;
        }

// you won't require following check for normal String , but as you would be dealing
// with numbers you may want to check that otherwise, Some surprises are 
// waiting for you, while doing some math with the numbers

if (!text.matches("[0-9]+(\\.[0-9][0-9]?)?")) {
            System.out.println("invalid: "+ text);
            return false;
        }else{
            System.out.println("Valid: "+ text);
        }
//


        return true;
    } 

现在假设这是您拥有的编辑文本

 EditText editTextNumber = (EditText) rootView.findViewById(R.id.editTextNumber);

if(isValidString(editTextNumber.getText().toString)){
  

your String validation is done so you can perform your relevant action here

}