【问题标题】:Check contain numbers/digits检查包含数字/数字
【发布时间】:2017-10-16 12:01:35
【问题描述】:

我对 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";
    }
}

但是好像根本不行,有没有其他方法?感谢您的回复!

【问题讨论】:

  • 那么你想检查单元格是包含数字还是只包含数字?

标签: c# .net contains


【解决方案1】:

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

代替

if (data_source.Contains(reNum.Match))

使用

if (reNum.Match(data_source))

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

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

【讨论】:

  • 注意,我会尝试这个解决方案,感谢您的回复@vorkosigan
【解决方案2】:

你试过这个吗:

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

【讨论】:

    【解决方案3】:

    如果您想检查第 4 列中是否有 任何 个整数(例如“-123456”),您可以尝试结合 Linq正则表达式

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

    如果您想检查第 4 列是否包含数字,例如“bla-bla-7-bla”:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-20
      • 2022-06-30
      • 2016-05-06
      • 1970-01-01
      • 2015-02-07
      • 2010-12-19
      相关资源
      最近更新 更多