如何找到C#中确切数字的匹配项?

时间:2016-08-19 14:50:37

标签: c#

我有一个字符串,让我们说:

string s = "This is a test: 1234567";
int i = 1234567;
int j = 234567;

我想找到字符串s中数字1234567的完全匹配。 我尝试使用Regex.IsMatch,但它似乎没有用。

这就是我的尝试:

Regex.IsMatch(s, @"(^|\s)" + i.ToString() + @"(\s|$)") // This should yield true. But it's not. 

有什么想法吗?

注意:为了更明确地,数字j与字符串s不完全匹配,它只是数字i,它与字符串s完全匹配

3 个答案:

答案 0 :(得分:1)

编辑: 我错过了ji的重点,参见评价。

一种简单的方法(避免Regex)是:

bool isMatch = s.Contains(i.ToString());

文档:Contains method返回一个值,该值指示指定的子字符串是否出现在此字符串中。

答案 1 :(得分:1)

谢谢大家的快速回复。 @Quantic的解决方案:

sudo /etc/init.d/networking restart

为我工作。

答案 2 :(得分:1)

在这里,我开发了一个小算法来帮助你:

bool Get(string s, int i)
{
    bool result = false;
    int index = s.IndexOf(i.ToString());
    if (index >= 0)
    {
        if (index == 0)
        {
            if (i.ToString().Length == s.Length)
            {
                result = true;
            }
            else
            {
                if (char.IsNumber(s.ElementAt(index + i.ToString().Length)))
                {
                    result = false;
                }
            }
        }
        else
        {
            if (char.IsNumber(s.ElementAt(index - 1)))
            {
                result = false;
            }
            else
            {
                result = true;
            }
        }
    }
    else
    {
        result = false;
    }
    return result;
}

您可能会以下列方式使用此方法:

bool result = Get(s, j);

注意:它太长了,因为它必须处理所有的情况,但似乎它有效,对于丑陋的代码感到抱歉!