【问题标题】:android check if string contains characters other than 0-9android检查字符串是否包含0-9以外的字符
【发布时间】:2013-11-28 02:23:41
【问题描述】:

我正在创建一个用于计算游戏积分的应用程序。这个应用程序有一个 edittext 组件。我想检查从编辑文本中检索到的字符串是否包含 0-9 以外的字符。这是因为我的应用程序包含一个 integer.parse 函数,如果输入了 0-9 以外的字符,该函数会崩溃。所有帮助将不胜感激。提前致谢。

【问题讨论】:

标签: android string parsing crash


【解决方案1】:

如果您只想通知用户无效字符,则可以将其包装在 try/catch 中并采取相应措施

try
{
    int someInt = Integer.parseInt(et.getText().toString());
    // other code
}
catch (NumberFormatException e)
{
    // notify user with Toast, alert, etc...
}

您也可以使用regular expression 来查找您想要/不想要的字符,具体取决于您的需要。

为了清楚,如果我的代码注释不是,我建议您对异常执行一些操作并通知用户。不要抓住它,让它坐着

【讨论】:

  • 不好的方法,你不应该那样做!
  • 是的,无论如何,这是一件好事。您可以添加的另一个安全网是 EditText 上的 android:digits 属性。将其设置为android:digits="0123456789"。这将限制只能输入这些字符。
  • @hasan 为什么不好?
  • @kcoppock 是的,谢谢。我应该提到它通常应该用于解析。
  • 是的,捕捉异常并没有什么坏处。捕捉和忽视,当然,但这种方法绝对没有错。
【解决方案2】:
public static boolean isNumeric(String str)
{
    for (char c : str.toCharArray())
    {
        if (!Character.isDigit(c)) return false;
    }
    return true;
}

public boolean isNumeric(String s) {  
    return s.matches("[-+]?\\d*\\.?\\d+");  
} 

【讨论】:

    【解决方案3】:

    首先你可以将edittext设置为整数,所以在你的布局中放

    android:inputType="number"

    它只会在编辑文本中设置为整数。

    这里所有可能的类型: http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType

    然后您可以使用正则表达式进行测试或/并在解析时捕获异常。 正则表达式为:

    "string".matches("\\d+") // true when numbers only, false otherwise

    参考这里:

    http://developer.android.com/reference/java/lang/String.html#matches(java.lang.String) http://developer.android.com/reference/java/util/regex/Pattern.html

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 1970-01-01
      • 2011-11-09
      • 2013-05-18
      • 2013-10-26
      • 1970-01-01
      • 2019-11-22
      • 2021-12-20
      • 2014-09-17
      相关资源
      最近更新 更多