是否存在具有允许从字符串执行此类解析的功能的方法或库: 输入:我要在其中搜索的输入字符串,用于搜索的模式(稍后将介绍)。 输出:字符串数组
该模式必须采用以下格式:
dfs = dfs.bfill(axis=1).ffill(axis=1)
因此,您应该指定输出值必须位于的位置。
使用此模式的输入和输出示例:
输入:"Items: {0} in Boxes: {1}"
输出:"Items Item 1, Item 2 in Boxes Box 1, Box 2"
我知道这不是一个很难编写的函数,但是我正在寻找标准.NET库中的现有解决方案,或者寻找自定义快速解决方案。
答案 0 :(得分:1)
我可以想到两种解决方案:使用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()
个物品。
您使用什么以及最适合您的问题取决于情况。我更喜欢字符串解决方案,因为它更易读且更不易出错。