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"

编辑:我想提一下,**中的值只能是字母和数字,也没有空格。

C# 字符串函数,用于获取两个符号内的字符

使用正则表达式。

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.