C# 使用模式解析字符串中的值
是否有任何方法或库具有允许从字符串执行此类解析的函数: 输入:输入字符串,我想在其中搜索,搜索模式(将在后面描述)。 输出:字符串数组 模式的格式必须如下所示:C# 使用模式解析字符串中的值,c#,parsing,C#,Parsing,是否有任何方法或库具有允许从字符串执行此类解析的函数: 输入:输入字符串,我想在其中搜索,搜索模式(将在后面描述)。 输出:字符串数组 模式的格式必须如下所示: “框中的项:{0}:{1}” 因此,您应该指定输出值必须位于的位置 使用此模式的输入和输出示例: 输入:“框1、框2中的项目1、项目2” 输出:[“第1项,第2项”,“第1框,第2框] 我知道这不是一个很难编写的函数,但我正在标准的.NET库中搜索现有的解决方案,或者搜索一个自定义的快速解决方案 我可以想到两种解决方案:使用Regex或
“框中的项:{0}:{1}”
因此,您应该指定输出值必须位于的位置
使用此模式的输入和输出示例:
输入:“框1、框2中的项目1、项目2”
输出:[“第1项,第2项”,“第1框,第2框]
我知道这不是一个很难编写的函数,但我正在标准的.NET库中搜索现有的解决方案,或者搜索一个自定义的快速解决方案 我可以想到两种解决方案:使用
Regex
或使用String
操作函数
使用正则表达式的第一种方法:
string text = "Items Item 1, Item 2 in Boxes Box 1, Box 2";
var match = Regex.Match(text, "^Items(?: ([^,]*),?)* in Boxes(?: ([^,]*),?)*$");
System.Console.WriteLine("Items:");
foreach (Capture cap in match.Groups[1].Captures)
System.Console.WriteLine(cap.Value); // -->Item1 and Item2
System.Console.WriteLine("Boxes:");
foreach (Capture cap in match.Groups[2].Captures)
System.Console.WriteLine(cap.Value); // --> Box 1 and Box 2
经典字符串操作的解决方案:
string text = "Items Item 1, Item 2 in Boxes Box 1, Box 2";
var allItems = text.Remove(text.IndexOf("in Boxes")).Remove(0, "Items ".Length);
var itemArray = allItems.Split(',');
var allBoyes = text.Remove(0, text.IndexOf("in Boxes")).Remove(0, "in Boxes ".Length);
var boxArray= allItems.Split(',');
注意这里的空格,您仍然需要.Trim()
项目
您使用什么以及什么最适合您的问题取决于具体情况。我更喜欢字符串解决方案,因为它更具可读性,而且不容易出错。您可以查看此链接。不,框架中没有这样的方法可以为您执行此操作。您必须使用字符串方法或正则表达式。“我知道这不是一个很难写的函数”是的,你需要这样做。