我有一个输入字符串://CommandName "Hello this World" (5, 4, 3)
我使用Split从此输入中获取所有条目,并将其全部存储在列表中。
List<String> s = input.Split().ToList();
如何合并以'“'开头和结尾的元素之间的所有元素?
向量坐标也一样吗?例如(2, 5, 8)
。
因此,请合并以(
开头和以)
结尾的元素之间的所有元素。
我应该为此使用正则表达式吗?
答案 0 :(得分:1)
带有正则表达式的真实基本示例:
var pattern = new Regex("([^ ]+) \"([^\"]+)\" \\(([^)]+)\\)");
var match = pattern.Match("command \"string\" (0, 1, 2)");
var command = match.Groups[1];
var text = match.Groups[2];
var location = match.Groups[3];
Console.WriteLine(command);
Console.WriteLine(text);
Console.WriteLine(location);
此示例假定您将始终拥有相同数量,相同类型的参数,并且不处理字符串中的引号,但可以使您了解如何使用正则表达式来实现。
正则表达式的解释
(?<command>[^ ]+) The first sequence of characters up to a space
( (?<parameter>...))* Zero or more parameters, separated by a space
parameter
捕获组的表达式为以下任意值:
(?<boolean>true|false) A boolean literal
(?<integer>[+-]?[0-9][0-9]*) An integer literal
(?<float>[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?) A floating point literal
(?<string>\"[^\"]+\") A string literal
(?<vector>\\([^)]+\\)) A vector literal
由于您设法为整数和浮点数添加了自己的表达式,因此我假设您了解每个正则表达式如何与它们各自的部分匹配。一旦将所有这些表达式以及两者之间的管道符号结合在一起,它看起来就有些令人生畏。