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