卧疾丰暇豫,翰墨时间作。这篇文章主要讲述如何限制用户输入EditText(Xamarin.Android)中小数点分隔符后的最大2位或3位数?相关的知识,希望能为你提供帮助。
我有以下课程:
public class DecimalFilter : java.Lang.Object, IInputFilter
{
//Pattern mPattern;
String regex = "[0-9]+((\.[0-9]{0," + (2 - 1) + "})?)||(\.)?";
public DecimalFilter(int digitsAfterZero)
{
//mPattern = Pattern.compile("[0-9]+((\.[0-9]{0," + (digitsAfterZero - 1) + "})?)||(\.)?");
regex = "[0-9]+((\.[0-9]{0," + (digitsAfterZero - 1) + "})?)||(\.)?";
}public Java.Lang.ICharSequence FilterFormatted(Java.Lang.ICharSequence source, int start, int end, ISpanned dest, int dstart, int dend)
{
if (System.Text.RegularExpressions.Regex.IsMatch(dest.ToString(), regex))
{
return new Java.Lang.String(string.Empty);
}
return null;
}
}
我有两个EditText,我在其上设置过滤器:
discountEditText.SetFilters(new IInputFilter[] { new DecimalFilter(2) });
quantityEditText.SetFilters(new IInputFilter[] { new DecimalFilter(3) });
当我运行应用程序并尝试在这些EditTexts中输入内容时,我甚至无法输入单个数字。
答案【如何限制用户输入EditText(Xamarin.Android)中小数点分隔符后的最大2位或3位数()】试试这段代码:
public class DecimalFilter : Java.Lang.Object, IInputFilter
{
String regex = "[0-9]+((\.[0-9]{0," + (2 - 1) + "})?)||(\.)?";
public DecimalFilter(int digitsAfterZero)
{
//mPattern = Pattern.compile("[0-9]+((\.[0-9]{0," + (digitsAfterZero - 1) + "})?)||(\.)?");
regex = "^[0-9]+(.[0-9]{0," + (digitsAfterZero-1)+ "})?$";
}public Java.Lang.ICharSequence FilterFormatted(Java.Lang.ICharSequence source, int start, int end, ISpanned dest, int dstart, int dend)
{if (System.Text.RegularExpressions.Regex.IsMatch(dest.ToString(), regex)||dest.ToString().Equals(""))
{
return new Java.Lang.String(source.ToString());
}return new Java.Lang.String( string.Empty);
}
}
推荐阅读
- 在Xamarin Forms Project中的OnAppearing方法中调用InitializeComponent
- 使用Android Deep Link的UPI支付网关
- “android.runtime.JavaProxyThrowable”是什么意思(我该如何解决?)
- 如何在C中打印Pascal三角形
- 如何在C中获得数字的阶乘
- 在Symfony 1.4中实现全局非静态辅助函数
- 如何解决FOSUserBundle异常(服务” fos_user.mailer”具有对不存在的服务”模板”的依赖)
- 如何在Silex项目中使用CLI清除缓存
- 如何解决C++错误C4996’getch’(不建议使用此项目的POSIX名称。而是使用符合ISO C和C ++的名称:_getch)