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()
项目


您使用什么以及什么最适合您的问题取决于具体情况。我更喜欢字符串解决方案,因为它更具可读性,而且不容易出错。

您可以查看此链接。不,框架中没有这样的方法可以为您执行此操作。您必须使用字符串方法或正则表达式。“我知道这不是一个很难写的函数”是的,你需要这样做。