我正在尝试使用c#从动态字符串值中选取或选择特定单词。
示例:
在第20卷之前有一些文本
我想参加=> Vol.20
在第一卷之前有一些文本
我想参加=>第1卷
这是 777卷之前的一些文本
我想参加=> 777卷
在示例中您可以看到,在Vol.20和Vol.1和Vol.777之前和之后始终都有文本,该字符串中唯一的常数也是Vol。[number]
我只想将Vol.Number作为字符串并保存。
答案 0 :(得分:3)
您可以为此使用RegEx
,
string str = "Here is some Text before Vol.1 Here is some text after";
Regex rg = new Regex(@"Vol.\d*"); //If number reqired use Vol.\d+
Match match = rg.Match(str);
string result = match.Value;
match.Value
将返回空字符串,如果找不到匹配项,或者您可以使用match.Success
检查是否存在匹配项。
当然,您可以在不使用正则表达式的情况下进行操作,例如:
string result = string.Concat(str.Split(' ').Where(s => s.Contains("Vol.")));
但是我更喜欢正则表达式版本。
如果字符串中只有一个Vol.[Number]
,则所有这些版本都适用于多个实例,您可以执行以下操作:
string str = "Vol.551 Here is some Text before Vol.1 Vol.12 Here is some text after Vol.143";
Regex rg = new Regex(@"Vol.\d*"); //If number reqired use Vol.\d+
Match match = rg.Match(str);
MatchCollection matches = rg.Matches(str);
foreach (var item in matches)
{
//Do something with item.Value
}
和非正则表达式版本:
string[] matches = str.Split(' ').Where(s => s.Contains("Vol.")).ToArray();
同样,我更喜欢正则表达式版本而不是上面的版本。但是,如果字符串不是太大,并且性能没有问题,则可以使用其中任何一个。
参考文献: Regex Class