仅检查字符串中的数字和一个可选的小数点。
我需要检查字符串是否只包含数字。我怎样才能在 C# 中实现这一目标?
string s = "123" → valid
string s = "123.67" → valid
string s = "123F" → invalid
有没有像IsNumeric这样的函数?
I need to check if a string contains only digits. How could I achieve this in C#?
string s = "123" → valid
string s = "123.67" → valid
string s = "123F" → invalid
Is there any function like IsNumeric?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
假设数字不会溢出
一个巨大字符串的双精度,请尝试正则表达式:
添加科学记数法(e/E)或+/-符号(如果需要)...
works assuming the number doesn't overflow a double
for a huge string, try the regexp:
add in scientific notation (e/E) or +/- signs if needed...
摘自 MSDN(如何使用 Visual C# 实现 Visual Basic .NET IsNumeric 功能):
Taken from MSDN (How to implement Visual Basic .NET IsNumeric functionality by using Visual C#):
您可以使用
double.TryParse
You can use
double.TryParse
无论字符串有多长,这都应该有效:
This should work no matter how long the string is:
使用正则表达式是最简单的方法(但不是最快的方法):
Using regular expressions is the easiest way (but not the quickest):
如上所述,您可以使用 double.tryParse
如果您不喜欢那样(出于某种原因),您可以编写自己的扩展方法:
用法:
输入 :
输出:
As stated above you can use double.tryParse
If you don't like that (for some reason), you can write your own extension method:
Usage:
Input :
Output:
我认为您可以在 Regex 类
Regex.IsMatch( yourStr, "\d" )
中使用正则表达式或类似的东西。
或者您可以使用 Parse 方法 int.Parse( ... )
I think you can use Regular Expressions, in the Regex class
Regex.IsMatch( yourStr, "\d" )
or something like that off the top of my head.
Or you could use the Parse method int.Parse( ... )
如果您接收字符串作为参数,更灵活的方法是使用正则表达式,如其他帖子中所述。
如果您获得用户的输入,您可以直接挂接 KeyDown 事件并忽略所有非数字键。这样你就可以确保你只有数字。
If you are receiving the string as a parameter the more flexible way would be to use regex as described in the other posts.
If you get the input from the user, you can just hook on the KeyDown event and ignore all keys that are not numbers. This way you'll be sure that you have only digits.
这应该有效:
This should work: