繁体   English   中英

如何将包含括号的字符串拆分为多维数组

[英]How to Split String with Containing Parentheses into multi-dimensional array

我有以下字符串:

"(X,Y,Z),(A,B,C),(R,S,T)"

我想把它拆分成一个多维数组:

arr[0] = [x,y,z]
arr[1] = [a,b,c]
arr[2] = [r,s,t]

以便:

arr[0][1] = y,  arr[0][2] = z, etc.

我可以通过剥离第一个和最后一个parens,拆分“),(”然后循环遍历该数组并进行另一次拆分。但我感觉很脏,没有涂抹,就像一个背面条中的剥离器(双关语)。有更干净的方式吗?

也许有些LINQ可以救援?

我正在使用C#。

string data = "(X,Y,Z),(A,B,C),(R,S,T)";

string[][] stringses = data.Trim('(', ')')
    .Split(new[] {"),("}, StringSplitOptions.RemoveEmptyEntries)
    .Select(chunk => chunk.Split(','))
    .ToArray();

您应该可以通过字符串拆分和LINQ轻松地创建一个锯齿状数组 (如代码所示):

string original = "(X,Y,Z),(A,B,C),(R,S,T)";

string[] groups = original.Trim('(',')')
                     .Split(new[] {"),("}, StringSplitOptions.RemoveEmptyEntries);
string[][] results = groups.Select(g => g.Split(',')).ToArray();

正则表达式是你的朋友。 这是一个简单的代码片段,可以为您完成。

var input = @"(X,Y,Z),(A,B,C),(R,S,T)";
var pattern = @"[A-Za-z,]+\b";

List<List<string>> twoDimentionList = new List<List<string>>();

foreach (Match m in Regex.Matches(input, pattern)) 
{
    List<string> values = m.Value.Split(',').ToList<string>(); 
    twoDimentionList.Add(values)
}

希望这可以帮助!

您可以使用正则表达式获取数据

一个reqular表达式是: (\\(([AZ]+)\\,?\\))+这将在组中给你x,y,z ..然后只需在第二维数组中添加它们:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM