C# 如何将[x]和[x+;1]放入字符串,然后跳到[x+;2]
投入:1;A.2.B3.C4.D5.E6.f 我得到的输出:1a;a2;b3;补体第四成份;d5;e6 我想要的输出:1a;2b;3c;4d;5e;6f 我知道这是一件简单的事情,但我就是不知道该怎么做 这是我的密码:C# 如何将[x]和[x+;1]放入字符串,然后跳到[x+;2],c#,arraylist,C#,Arraylist,投入:1;A.2.B3.C4.D5.E6.f 我得到的输出:1a;a2;b3;补体第四成份;d5;e6 我想要的输出:1a;2b;3c;4d;5e;6f 我知道这是一件简单的事情,但我就是不知道该怎么做 这是我的密码: for (int x = 0; x < coll.Count; x++) { if (x == 0) { line.Append(coll[x].ToString());
for (int x = 0; x < coll.Count; x++)
{
if (x == 0)
{
line.Append(coll[x].ToString());
line.AppendLine(coll[x + 1].ToString());
}
else
{
if (x % 2 == 0)
{
}
else
{
try
{
line.Append(coll[x].ToString());
line.AppendLine(coll[x + 1].ToString());
x++;
textBox1.Text = line.ToString();
}
catch { }
}
}
for(int x=0;x
如果你的列表像=[1,a,2,b,3,c,4,d,5,e,6,f]
试试这个
String line = "";
for(int i=0;i<list.size();i+2){
line += list.get(i)+list.get(i+1);
}
textBox1.Text = line;
字符串行=”;
对于(inti=0;i如果你的列表像=[1,a,2,b,3,c,4,d,5,e,6,f]
试试这个
String line = "";
for(int i=0;i<list.size();i+2){
line += list.get(i)+list.get(i+1);
}
textBox1.Text = line;
字符串行=”;
对于(inti=0;i如果您想保持代码的原样(我假设某些内容将在空条件下进行),那么您只需要将If(x%2==0)
更改为If(x%2!=0)
(或者同样If(x%2==1)
),因为您的代码当前在i=0时追加到行,然后是1,3,…即所有奇数编号的索引,而您需要在所有偶数编号的索引处追加到行
(不幸的是,我无法编辑您的问题,但是如果您只是在以开头的行前面加上四个空格,那么它的格式应该正确。)如果您想保持代码的原样(我假设某些内容将以空条件出现),那么您只需要更改if(x%2==0)
到如果(x%2!=0)
(或者同样如果(x%2==1)
),因为当i=0时,您的代码当前正在追加到行,然后是1,3,…即所有奇数编号的索引,而您需要在所有偶数编号的索引处追加到行
(遗憾的是,我无法编辑您的问题,但如果您只需在以开头的行前面插入四个空格,则应正确设置格式。)带LINQ的单行代码(但效率不高):
使用LINQ的单行代码(但效率不高):
另一个LINQy解决方案:
string input = "1;a;2;b;3;c;4;d;5;e;6;f";
var split = input.Split(';');
string rejoined = String.Join(";", Pairs(split));
其中成对
为
IEnumerable<string> Pairs(IEnumerable<string> strings)
{
if (strings.Take(1).Count() == 0)
{
return new string[]{};
}
return new [] {String.Join("", strings.Take(2))}.Concat(Pairs(strings.Skip(2)));
}
IEnumerable对(IEnumerable字符串)
{
if(strings.Take(1.Count()==0)
{
返回新字符串[]{};
}
返回新的[]{String.Join(“,strings.Take(2))}.Concat(Pairs(strings.Skip(2)));
}
另一个LINQy解决方案:
string input = "1;a;2;b;3;c;4;d;5;e;6;f";
var split = input.Split(';');
string rejoined = String.Join(";", Pairs(split));
其中成对
为
IEnumerable<string> Pairs(IEnumerable<string> strings)
{
if (strings.Take(1).Count() == 0)
{
return new string[]{};
}
return new [] {String.Join("", strings.Take(2))}.Concat(Pairs(strings.Skip(2)));
}
IEnumerable对(IEnumerable字符串)
{
if(strings.Take(1.Count()==0)
{
返回新字符串[]{};
}
返回新的[]{String.Join(“,strings.Take(2))}.Concat(Pairs(strings.Skip(2)));
}
原来我只需要将(x%2==0)更改为(x%2!=0)…该死的事情原来我只需要将(x%2==0)更改为(x%2!=0)…该死的事情显然标记已经编辑过,.size()
和.get(I)
我认为是java吗?如果你将.size()
替换为.Count
和.get(I)
,应该没问题。哦,循环迭代器变量应该有i+=2
,而不仅仅是i+2
。它是java或者我打算写java:)。我在这里写的,不是在IDE中。谢谢你的注意:)显然标记已经编辑过,.size()
和.get(i)
我认为是java吗?如果将.size()
替换为.Count
并将.get(I)
替换为[I]
,应该没问题。哦,循环迭代器变量应该有i+=2
,而不仅仅是i+2
。它是java或者我打算写java:)。我在这里写的,不是在IDE中。谢谢你的关注:)(仅供参考)你不需要调用ToArray()
,作为String.Join
使用IEnumerable
。至少在.NET4中是这样。@Matt Ellen:正如你所看到的,我在Join
方法中使用结果IEnumerable
。将添加到数组中告诉OP我们可以将其转换为数组……对不起,我完全错过了这个!(仅供参考)您不需要调用ToArray()
,作为String.Join
使用IEnumerable
。至少在.NET4中是这样。@Matt Ellen:正如你所看到的,我在Join
方法中使用结果IEnumerable
。将添加到数组中告诉OP我们可以将其转换为数组……对不起,我完全错过了这个!