输入:1;一个 ; 2; b; 3; C; 4; d; 5,E 6;˚F
输出我得到:1a; A2; B3; C4; D5; E6
我想要的输出:1a; 2b; 3C; 4d; 5E; 6F
我知道这是一件很简单的事情,但我似乎无法将我该死的头围绕在它周围......
继承我的代码:
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 { }
}
}
答案 0 :(得分:1)
如果你想保持代码的方式(我假设某些东西将进入空条件),那么你只需要将if (x % 2 == 0)
更改为if (x % 2 != 0)
(或同等地{{ 1}}),因为你的代码当前在i = 0时附加到行,然后是1,3,...,即所有奇数编号的索引,而你需要在所有偶数编号索引处追加到该行。
(不幸的是我无法编辑您的问题,但如果您只是在以if (x % 2 == 1)
开头的行前面留下四个空格,那么它应该正确格式化。)
答案 1 :(得分:0)
如果你的列表是= [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;
修改强> 如果你想要半冒号;
我编辑了
String line = "";
for(int i=0;i<list.size();i+2){
line += list.get(i)+list.get(i+1);
if(i != list.size() - 2){
line+=";";
}
}
textBox1.Text = line;
答案 2 :(得分:0)
使用LINQ的一行代码(但效率不高):
string[] source = { "1", "a", "2", "b", "3", "c" };
var result = source.Zip(source.Skip(1), (s1, s2) => s1 + s2)
.Where((s, i) => i % 2 == 0);
string[] arrayResult = result.ToArray();
string stringResultWithSeperator = string.Join(";", result);
答案 3 :(得分:0)
另一个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));
Pairs
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)));
}