第一个GUID 字符串:
A-B-C-D
第二个GUID 字符串:
W-X-Y-Z
第三次必需可逆字符串:
A -W-的乙 -X- C -Y-的 d -Z
什么是加入1st& amp;获得第3名,然后将其分开以获得两个回归?
Join-Split,Aggregate,Zip或其他?
编辑我:
如果每个GUID都假定为Enumerable<String>
,则可能是LINQ
{ A , B , C , D }?
答案 0 :(得分:4)
最好的方法?我不确定。但我觉得这很简单。
string g1 = "A-B-C-D";
string g2 = "W-X-Y-Z";
var result = String.Join("-",g1.Split('-').Zip(g2.Split('-'), (a,b) => a+"-"+b));
修改强>
然后回来
int i=0;
var gs = result.Split('-').GroupBy(_ => i++ % 2).Select(g => String.Join("-",g))
.ToList();
答案 1 :(得分:4)
string str1 = "A-B-C-D";
string str2 = "W-X-Y-Z";
要合并:
string merged = string.Join("-",
str1.Split('-').Zip(str2.Split('-'), (a, b) => a + "-" + b).ToArray());
结果:
A-W-B-X-C-Y-D-Z
分裂:
ILookup<int, string> split = merged.Split('-')
.Select((a, i) => new { i = i, val = a })
.ToLookup(x => x.i % 2, x => x.val);
string split1 = string.Join("-", split[0].ToArray());
string split2 = string.Join("-", split[1].ToArray());
结果:
A-B-C-D
W-X-Y-Z
答案 2 :(得分:1)
我不知道“什么是最好的方式”,但你可以通过这样一个简单的“for”循环来实现:
string a = "ABCD";
string b = "WXYZ";
string c = string.Empty;
if(a.Lenght == b.Lenght)//Check lenght
{
for(int i = 0; i < a.Lenght; i++)
{
c += a[i] + "-" + b[i];
if(i != a.Lenght)//If it isn't last character
{
c += "-";//Add a "-" end of "c"
}
}
}
答案 3 :(得分:1)
请原谅我,如果语法不是100%,C#不是我的第一语言,但我会将每个GUID拆分成一个List。然后是一个简单的循环。
List<string> lstGuid1 = new List<string>;
List<string> lstGuid2 = new List<string>;
lstGuid1.AddRange(guid1.ToString().Split("-"));
lstGuid2.AddRange(guid2.ToString().Split("-"));
string guid3 = null;
if(lstGuid1.Length == lstGuid2.Length)
{
for(int i = 0; i < lstGuid1.Length; i++)
{
guid3 += lstGuid1[i] + "-" + lstGuid2[i] + "-";
}
guid3 = guid3.Substring(0, guid3.Length - 1);
}