gpt4 book ai didi

c# 将锯齿状数组复制到字符串

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:30 24 4
gpt4 key购买 nike

我的函数应该用“&”“;”分割一个字符串和 ","并返回一个三重锯齿状数组,反之亦然。 (来自数据如:1,2,3;4,5,6&1,2,3;4,5,6)

我一直在努力让它工作,现在由于某种原因我在

上遇到了 system.argumentnullexception
Array.Copy(playerOneEnts, allEnts[0], playerOneEnts.Length);
Array.Copy(playerTwoEnts, allEnts[1], playerTwoEnts.Length);

完整代码:

public string convertToString(string[][][] allEnts)
{
string Player = string.Empty;
string[][] playerOneEnts = new string[maxEnts][];
string[][] playerTwoEnts = new string[maxEnts][];

Array.Copy(allEnts[0], playerOneEnts, allEnts[0].Length);
Array.Copy(allEnts[1], playerTwoEnts, allEnts[1].Length);

for (int j = 0; j < playerOneEnts.Length; j++)
{
for (int i = 0; i < playerOneEnts[j].Length; i++)
{
Player += playerOneEnts[j][i] + ",";
}

Player = Player.TrimEnd(',');
Player += ";";
}

Player = Player.TrimEnd(';');
Player += "&";

for (int j = 0; j < playerTwoEnts.Length; j++)
{
for (int i = 0; i < playerTwoEnts[j].Length; i++)
{
Player += playerTwoEnts[j][i] + ",";
}

Player = Player.TrimEnd(',');
Player += ";";
}

Player = Player.TrimEnd(';');
return Player;
}

public string[][][] convertToArray(string ents)
{
string[] p = new string[2];
string[][] playerOneEnts = new string[maxEnts][];
string[][] playerTwoEnts = new string[maxEnts][];
string[][][] allEnts = new string[2][][];

p = ents.Split('&');

try
{
playerOneEnts = p[0].Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Select(chunk => chunk.Split(',')).ToArray();
playerTwoEnts = p[1].Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Select(chunk => chunk.Split(',')).ToArray();

MessageBox.Show(playerOneEnts.Length.ToString());

Array.Copy(playerOneEnts, allEnts[0], playerOneEnts.Length);
Array.Copy(playerTwoEnts, allEnts[1], playerTwoEnts.Length);
}
catch
{
MessageBox.Show("unable to convert string", "Fatal Error");
}

return allEnts;
}

代码对我来说就像一场灾难,如果有人知道将其转换为字符串的更好方法,我会很高兴提出任何想法。摆脱我的错误已经足够帮助我了。

谢谢!

最佳答案

这是使用 Linq 的示例(需要 .Net 4.0):

var source = "1,2,3;4,5,6&1,2,3;4,5,6";

string[][][] decoded = source.Split('&').Select(x => x.Split(';').Select(y => y.Split(',').ToArray()).ToArray()).ToArray();

string reencoded = String.Join("&", decoded.Select(x => String.Join(";", x.Select(y => String.Join(",", y)))));

或者,可以使用 IEnumarable 泛型来避免转换为数组。

警告:此代码不验证输入,例如数组长度。

编辑: .NET 3.5 重新编码:

var reencoded = String.Join("&", decoded.Select(x => String.Join(";", x.Select(y => String.Join(",", y)).ToArray())).ToArray());

关于c# 将锯齿状数组复制到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35102320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com