我试图查找子字符串EnemyType('XXXX')
的所有实例,其中XXXX是一个任意字符串,EnemyType('XXXX')
的实例可能会出现多次。
现在我在C#中使用了index of
/ substring
个函数的联盟,但想知道是否有更简洁的方法吗?
答案 0 :(得分:3)
使用正则表达式。例如:
using System.Text.RegularExpressions;
var inputString = " EnemyType('1234')abcdeEnemyType('5678')xyz";
var regex = new Regex(@"EnemyType\('\d{4}'\)");
var matches = regex.Matches(inputString);
foreach (Match i in matches)
{
Console.WriteLine(i.Value);
}
它将打印:
EnemyType('1234')
EnemyType('5678')
要匹配的模式为@"EnemyType\('\d{4}'\)"
,其中\d{4}
表示4个数字字符(0-9)
。括号用反斜杠转义。
编辑:由于您只希望字符串在引号内,而不是整个字符串,因此您可以使用命名组。
var inputString = " EnemyType('1234')abcdeEnemyType('5678')xyz";
var regex = new Regex(@"EnemyType\('(?<id>[^']+)'\)");
var matches = regex.Matches(inputString);
foreach (Match i in matches)
{
Console.WriteLine(i.Groups["id"].Value);
}
现在打印:
1234
5678
Regex是一个非常好的解析字符串的工具。如果你经常解析字符串,正则表达式可以让生活变得更加轻松。