正则表达式找到一个特定的字符串

时间:2013-11-20 16:13:57

标签: c# asp.net regex

我想在下面的单词列表中找到“Amount”这个词:

WaterAmount 
DamageAmount 
AmountOwed

我尝试使用正则表达式,但以下内容不起作用:

Regex.IsMatch(name, @"\Amount\")

有人可以帮我弄明白怎么做吗?

谢谢。

更新

正在使用的代码:

foreach (string name in Request.Form.AllKeys)
        {

            if (Regex.IsMatch(name, "Amount"))
            {
                Response.Write(Request.Form[name]);
            }
            else
            {
                Response.Write("Not working\n");
            }

        }
}

3 个答案:

答案 0 :(得分:3)

使用:

而不是使用正则表达式
name.Contains("Amount")

这应该返回一个关于Amount是否在字符串中的布尔值。

在这种情况下你不需要正则表达式(有时候在没必要的情况下去除它是好的)

正如其他人所说,

name.IndexOf("amount", StringComparison.OrdinalIgnoreCase) >= 0;

也可用于包括“AMOUNT”,“金额”,“AmOunT”等。

或者:

name.IndexOf("amount", StringComparison.OrdinalIgnoreCase)!= -1

我们只是检查IndexOf是否为'not found'发送回-1。

您可能不想使用的原因:

name.ToLower().Contains("amount")

是因为它会出现国际字符(重音等)的问题。 如果您传入的变量可能包含任何文本,则可能会出现问题。 对于具有常量字符串的情况,它可能没问题(但不是非常推荐)

编辑:

如果我正确理解C#(不是我的专业知识,虽然我已经使用过它),这应该可行:

foreach (string name in Request.Form.AllKeys)
{
    if (name.IndexOf("amount", StringComparison.OrdinalIgnoreCase) >= 0)
    {
        Response.Write(Request.Form[name]);
    }
    else
    {
        Response.Write("Not working\n");
    }
}

我在你的代码中看到了一个额外的大括号。这应该在那里吗?

答案 1 :(得分:1)

我认为你的方法是正确的。我会建议一个小改动让它起作用......

Regex.IsMatch(name, @"Amount")

祝你好运!

答案 2 :(得分:0)

var index = name.IndexOf("Amount", 0, name.Length);

这将在第一次出现时为index of。如果你想要所有这些,只需循环文本。

忽略区分大小写;

var index = name.IndexOf("Amount", 0, StringComparison.OrdinalIgnoreCase);

如果没有匹配,IndexOf将返回-1。

如果您只想知道字符串是否在那里,请使用.Contains()