任何人都可以提供一种算法来检查输入字符串是否是正确形状和形式的十进制数字?
正确形状和形式的规则:
正确的形状和形式的例子:
1,234,567.89 // English style 1.234.567,89 // French style 1 234 567,89 // German style 1234567.89 // English mathematical style 1234567,89 // European mathematical style 12.00 12.0 12
请抵制你提出Decimal.Parse或Decimal.TryParse的诱惑.两种方法都快乐地接受诸如"1,2,3,4"之类的字符串,这不是我想要的.
我有一个以编程方式创建的edittext(所以不是在xml中),我想在用户按下时启动数字键盘.问题是我希望这个键盘也包含小数分隔符(.).
我尝试过很多东西但似乎没什么用
final EditText input = new EditText(this);
input.setKeyListener(new DigitsKeyListener()); //这给出了没有小数分隔符的数字input.setInputType(InputType.TYPE_CLASS_NUMBER); //这给出了没有小数分隔符的数字input.setInputType(InputType.TYPE_CLASS_PHONE); //这给了电话键盘第二页中的所有数字和小数点分隔符.这不是我想要的
我知道有一种方法可以实现自定义键盘:
http://android-developers.blogspot.com/2009/04/creating-input-method.html
http://developer.android.com/resources/samples/SoftKeyboard/index.html
但它似乎很痛苦,我首先寻找更快的替代方案.
我想要的只是以下之一:1.启动包含小数点分隔符的数字键盘2.启动标准键盘,但在数字"页面"中设置以上是否可能?先感谢您!
从一行字符串中提取数字(有时中间有点)的最佳方法是什么?
var str = "ghjkhjgbkhj123.45khgbkhjgk67 8kjhgkj hg13.99sads";
Run Code Online (Sandbox Code Playgroud)
我需要一个数组[123.45, 67, 8, 13.99];
str.match(/\d+/g) 返回略有不同的结果 - 它不算"."。
我试图解决这个问题几个小时,绝对不明白编译器在这里做了什么.我有基本上看起来像这样的字符串:
"KL10124 Traitor #2 - +XX-+0.25 - More Stuff"
Run Code Online (Sandbox Code Playgroud)
并需要以编程方式读取双"0.25".调用s以上的字符串,以下两行不起作用:
string[] h = s.Split('-');
string h2 = h[2].Substring(1,h[2].Length - 2);
double d = Convert.ToDouble(h2);
Run Code Online (Sandbox Code Playgroud)
如果我显示d的输出是"25".我认为这可能取决于'.' resp','文化依赖,但如果我插入
double d = Convert.ToDouble(h2.Replace('.',','));
Run Code Online (Sandbox Code Playgroud)
它没有改变一件事,输出仍然是"25".
但最后,如果我执行如下的强力方法,我会在屏幕上得到逐字输出"0,25"
double d;
string[] h = s.Split('-');
string h2 = h[2].Substring(1,h[2].Length - 2);
if (h2.Contains("."))
{
string[] h3 = h2.Split('.');
d = Convert.ToDouble(h3[0]) + Convert.ToDouble(h3[1])/100;
}
else
{
d = Convert.ToDouble(h2);
}
return d;
Run Code Online (Sandbox Code Playgroud)
为什么前两个版本不起作用?最后一点代码不是正确的方法.
我正在使用 RegexExtract 从文本中提取数字值。我使用了以下[0-9]+(\.[0-9][0-9]?)?链接中的以下正则表达式,但我发现它只提取小数点后的两个值。我还需要它前面的数字。不知道为什么它不起作用。我也尝试过它的不同变体。
我从中提取的文本并不总是相同的长度,大约有 100 个字符。在文本中,我只需要提取数值(x.xx):Gmax = 2.3428
ThisWorkbook.Worksheets(Warn.MachBox.Value & "_C1").Range("B" & Duncan2 + 1).Value = RegexExtract(ThisWorkbook.Worksheets(Warn.MachBox.Value & "_C1").Range("C" & Duncan2 + 1).Value, "Gmax = [0-9]+(\.[0-9][0-9]?)?")
我目前拥有它的方式以及我尝试过的不同变体只返回 0.34 并且不包括小数点之前的值(如果有的话)。我需要 2.34。
任何建议都非常感谢。谢谢!
编辑:忘记添加 RegexExtract 函数信息。这是在以下链接中找到的: 如何在文本字符串中提取文本
在Javascript中,我试图验证用户输入只是有效的小数
我有以下JSFiddle显示我目前有的正则表达式
var regex = /^[0-9]+$/i;
var key = '500.00';
if (key.match(regex) != null) {
alert('legal');
}
else {
alert('illegal');
}
Run Code Online (Sandbox Code Playgroud)
这适用于整数.我还需要允许十进制数字(即最多2位小数)
我已经尝试了很多可以在stackoverflow上找到的正则表达式,例如 简单的正则表达式,用于精度为2的小数
但它们都不适合这个用例
我究竟做错了什么?
我使用以下REG-EX验证器验证文本框是否接受小数点后的两位数.
<asp:RegularExpressionValidator Display="Dynamic" ID="regexp" runat="server" ControlToValidate="regexptest" ValidationGroup="regexptest" ValidationExpression="^\d+(\.\d\d)?$">
Run Code Online (Sandbox Code Playgroud)
但是我可以在小数点后输入两个以上的值.