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