检查包含数字/数字

时间:2017-05-17 07:04:55

标签: c# .net contains

我是C#visual studio的新手。我想询问是否可以使用contains函数来检查我的程序是否包含DataTable行中的数字/数字?

p / s:我已经尝试过正则表达式功能(参考在线讨论的一些主题)

string checkstring = "1234567890";
Regex reNum = new Regex(@"^\d+$");
bool isNumeric = reNum.Match(checkstring).Success;

for (int i = 0; i < my_datatable.Rows.Count; i++)
{
    data_source = my_datatable.Rows[i][4].ToString();

    if (data_source.Contains(reNum.Match))
    {
        my_datatable.Rows[i][4] = "Contain Number";
    }
    else
    {
        my_datatable.Rows[d][4] = "No number";
    }
}

但它似乎根本不起作用,还有其他方法吗?谢谢你的回复!

3 个答案:

答案 0 :(得分:1)

如果要检查单元格是否只包含数字,则需要在for循环中使用正则表达式。

而不是

if (data_source.Contains(reNum.Match))

使用

if (reNum.Match(data_source))

如果data_source仅为数字,则返回true(注意 - 仅适用于正整数 - 如果您有其他字符,如前导短划线或小数点或逗号,则需要不同的策略。)

如果你想测试是否存在任何数字(但其他字符也可以),那么你需要将你的正则表达式字符串更改为@"\d",如果至少有一个数字,它将返回true本。

答案 1 :(得分:1)

你试过这个:

for (int i = 0; i < my_datatable.Rows.Count; i++)
{
    string data_source = my_datatable.Rows[i][4].ToString();
    if (data_source.Any(x=>Char.IsDigit(x)))
    {
        my_datatable.Rows[i][4] = "Contain Number";
    }
    else
    {
        my_datatable.Rows[i][4] = "No number";
    }
}

data_source.Any(x=>Char.IsDigit(x))将检查data_source是否包含至少一位数,如果是,则将单元格文本替换为"Contain Number",否则单元格文本将为"No number"。如果您要更改条件以检查所有数字,请将Any替换为All()

答案 2 :(得分:1)

如果您想检查第4栏中是否有任何整数(例如&#34; -123456 &#34;),您可以尝试结合 Linq 正则表达式

  var hasNumbers = my_datatable
    .Rows
    .OfType<DataRow>()
    .Where(row => row[4] != null)
    .Any(row => Regex.IsMatch(row[4].ToString(), "^-?[0-9]+$"));

如果要检查第4列是否包含数字,例如&#34; BLA-bla-的 7 -bla&#34;:

  var hasDigits = my_datatable
    .Rows
    .OfType<DataRow>()
    .Where(row => row[4] != null)
    .Any(row => row[4].ToString().Any(c => c >= '0' && c <= '9'));