从字符串中获取特定值

本文关键字:获取 字符串 | 更新日期: 2023-09-27 18:10:31

如果我有一个字符串

string Text="@Time:08:30PM,@Date:08/30/2015,@Duration:4,"

如何提取以"@"开头,以","结尾的字符呢?我已经搜索过了,我已经看到人们得到了一对子字符串,但不是我需要它。我想说:

string Time = "08:30PM" //However i can extract it from that string
string Date = "08/30/2015" //etc...

可以用正则表达式完成吗?

谢谢!

从字符串中获取特定值

如何使用Regex并将键值对转换为字典

string input = "@Time:08:30PM,@Date:08/30/2015,@Duration:4,";
var dict = Regex.Matches(input, @"@('w+):(.+?),")
           .Cast<Match>()
           .ToDictionary(m => m.Groups[1].Value, m => m.Groups[2].Value);
Console.WriteLine(dict["Time"]);

尝试使用String.Split()创建一个数组,然后在数组的每个元素上使用子字符串。

的例子:

string example = "@Time:08:30PM,@Date:08/30/2015,@Duration:4,";
string[] splitText = example.Split('@');

在此之后,splitText将包含这些元素:

{"", "Time:08:30PM,", "Date:08/30/2015,", "Duration:4," }

这是第一次尝试。对于您的示例可以很好地工作,当然也有可能需要根据需要处理的边缘情况。

 static void Main(string[] args)
 {
     var text = "@Time:08:30PM,@Date:08/30/2015,@Duration:4,";
     var Time = GetValueForItem("Time", text);
     var Date = GetValueForItem("Date", text);
     var Duration = GetValueForItem("Duration", text);
 }      
 static string GetValueForItem(string item, string text)
 {
     item = $"@{item}:"; //if pre C#6 use string.Format("@{0}:", item)
     var index = text.IndexOf(item);
     var chars = text.Substring(index + item.Length).TakeWhile(c => c != ',');
     return string.Concat(chars);
 }

获取您想要的文本的索引,使用它来获取所有字符,直到到达分隔符。