C# 字符串函数,用于获取两个符号内的字符
本文关键字:两个 符号 字符 函数 字符串 用于 获取 | 更新日期: 2023-09-27 17:57:08
我有一个看起来像这样的字符串:
My name is **name**, and I am **0** years old.
我需要提取 2 个星号**GETTHISVALUE**
内的字符并将其保存到List<string>
.最好的方法是什么?我更喜欢内置的 c# 函数或 LINQ。上述示例的输出必须是:
string[0] = "name"
string[1] = "0"
编辑:我想提一下,**中的值只能是字母和数字,也没有空格。
使用正则表达式。
var reg = new Regex(@"'*'*([a-z0-9]+)'*'*", RegexOptions.IgnoreCase);
var matches = reg.Matches(input);
var l = new List<string>();
foreach (Match m in matches)
l.Add(m.Groups[1].Value);
我会使用Regex
:
List<string> myList = new List<string>();
MatchCollection matches = Regex.Matches(<input string here>, @"(?<='*'*)[A-Za-z0-9]+(?='*'*)");
for (int i = 0; i < matches.Count; i ++)
{
if (i != 0 && i % 2 != 0) continue; //Only match uneven indexes.
myList.Add(matches[i].Value);
}
模式说明:
(?<='*'*)[^'*](?='*'*)
(?<='*'*) The match must be preceded by two asterisks.
[A-Za-z0-9]+ Match any combination of letters or numbers (case insensitive).
(?='*'*) The match must be followed by two asterisks.