从字符串中获取特定值
本文关键字:获取 字符串 | 更新日期: 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);
}
获取您想要的文本的索引,使用它来获取所有字符,直到到达分隔符。