簡體   English   中英

如何將[x]和[x + 1]轉換為字符串,然后跳至[x + 2]

[英]How to get [x] and [x+1] into a string then skip to [x+2]

輸入:1; 一種 ; 2; b; 3; c; 4; d; 5; e; 6; f

我得到的輸出是:1a; a2; b3; c4; d5; e6

我想要的輸出:1a; 2b; 3c; 4d; 5e; 6樓

我知道這是一件簡單的事情,但我似乎無法理解我的想法。

這是我的代碼:

 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 { }
                }
            }

如果要按原樣保留代碼(我假設某些情況將在空條件下進行),則只需將if (x % 2 == 0)更改為if (x % 2 != 0) (或者if (x % 2 == 1) ),因為當i = 0時,您的代碼當前正在追加到該行,然后是1,3,...,即所有奇數索引,而您需要追加到在所有偶數索引的行。

(不幸的是,我無法編輯您的問題,但是如果您只在開頭以for開頭的行前留四個空格,則應正確設置其格式。)

如果您的列表像= [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;

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);

另一個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)));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM