如何限制用户在 EditText(Xamarin.Android) 中输入小数点后最多 2 或 3 位数字?
How to limit user to input max 2 or 3 digits after decimal separator in EditText(Xamarin.Android)?
我有以下 class:
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) });
当我 运行 应用程序并尝试在这些 EditText 中输入内容时,我什至无法输入一个数字。
试试这个代码:
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);
}
}
我有以下 class:
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) });
当我 运行 应用程序并尝试在这些 EditText 中输入内容时,我什至无法输入一个数字。
试试这个代码:
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);
}
}