Tôi có một mảng chuỗi. cách đơn giản nhất để kiểm tra xem tất cả các yếu tố của mảng là sốCách dễ nhất để kiểm tra số
string[] str = new string[] { "23", "25", "Ho" };
Tôi có một mảng chuỗi. cách đơn giản nhất để kiểm tra xem tất cả các yếu tố của mảng là sốCách dễ nhất để kiểm tra số
string[] str = new string[] { "23", "25", "Ho" };
Nếu bạn thêm một tham chiếu đến assembly Microsoft.VisualBasic
, bạn có thể sử dụng sau một liner:
bool isEverythingNumeric =
str.All(s => Microsoft.VisualBasic.Information.IsNumeric(s));
Clever +1 ... out-of-the-box suy nghĩ –
+1, ý tưởng này làm tôi sợ, nhưng, địa ngục, nó hoạt động =) –
Tại sao lại sử dụng một cái gì đó có vẻ rất cụ thể cho VisualBasic? – davidfowl
Hãy thử điều này là gì:
string[] str = new string[] { "23", "25", "Ho" };
double trouble;
if (str.All(number => Double.TryParse(number, out trouble)))
{
// do stuff
}
Ý tưởng hay, nhưng điều này sẽ chỉ hoạt động nếu tất cả các số nằm trong Int32. – Konamiman
Trong trường hợp đó, double.TryParse sẽ hoạt động. –
Sử dụng thực tế là một chuỗi cũng là một mảng ký tự, bạn có thể làm điều gì đó như thế này:
str.All(s => s.All(c => Char.IsDigit(c)));
Nhưng điều này sẽ không hoạt động với các chuỗi có chứa khoảng trắng. Và làm thế nào về ký hiệu khoa học? –
dường như chúng ta cần phải xác định một số đầu tiên là gì =) –
Kona ... khoảng -1? Đó không phải là một downvote: P Chỉ cần một câu hỏi;) –
Bạn có thể làm điều này:
var isOnlyNumbers = str.All(s =>
{
double i;
return double.TryParse(s, out i);
});
Tại sao bạn lại bỏ phiếu ẩn danh? –
Hoặc không LINQ ...
bool allNumbers = true;
foreach(string str in myArray)
{
int nr;
if(!Int32.TryParse(str, out nr))
{
allNumbers = false;
break;
}
}
Làm thế nào về việc sử dụng biểu thức thông thường?
using System.Text.RegularExpressions;
...
bool isNum= Regex.IsMatch(strToMatch,"^\\d+(\\.\\d+)?$");
xin vui lòng, xác định số: nó một int32, số thập phân, float-điểm? –