c#包含单词异常编号

时间:2013-07-21 12:29:22

标签: c# string

我需要搜索一个字符串,看它是否包含"<addnum(x)>"

我在搜索过的其他单词上使用了.contains,并且我能想到的最简单的方法是你能以某种方式为数字设置例外,还是需要使用其他代码呢?

我的代码到目前为止。

public List<string> arguments = new List<string>();

    public void Custom_naming(string name_code)
    {
        arguments.Add("Changing the name to " + name_code); // Sets the new name.

        if( name_code.Contains("<addnum>") ) 
        {
            Add_number();
        }

        if (name_code.Contains("<addnum(x)>"))
        {// X = any number.
        }
    }
    private void Add_number() 
    {
        arguments.Add("Replaces all <addnum> with a number");
    }

    private void Add_number(int zeros) 
    {
        arguments.Add("Replaces all <addnumxx> with a number with lentgh of");
    }

2 个答案:

答案 0 :(得分:4)

使用正则表达式:

string s = "Foo <addnum(8)> bar.";
var contains = Regex.IsMatch(s, @"<addnum\(\d+\)>");

如果你还需要提取数字:

string s = "Foo <addnum(42)> bar.";
var match = Regex.Match(s, @"<addnum\((\d+)\)>");
if (match.Success)
{
    // assume you have valid integer number
    var number = Int32.Parse(match.Groups[1].Value);
}

答案 1 :(得分:4)

您可能需要使用正则表达式:

var match = Regex.Match(name_code, @"<addnum(?:\((\d+)\))?>");
if (match.Success)
{
    int zeros;
    if (int.TryParse(match.Groups[1].Value, out zeros))
    {
        Add_number(zeros);
    }
    else
    {
        Add_number();
    }
}

如果Add_number包含name_code或类似<addnum>之类的内容,则会返回相应的<addnum(123)>方法。

如果name_code中可能有多个这样的内容,例如<addnum(1)><addnum(2)>,您需要使用循环来分析每个匹配,如下所示:

var matches = Regex.Matches(name_code, @"<addnum(?:\((\d+)\))?>");
foreach(var match in matches)
{
    int zeros;
    if (int.TryParse(match.Groups[1].Value, out zeros))
    {
        Add_number(zeros);
    }
    else
    {
        Add_number();
    }
}