我需要搜索一个字符串,看看它是否包含"<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");
    }

最佳答案

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

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();
    }
}

10-02 05:19