簡體   English   中英

C#中的字符串數組拆分

[英]String array splitting in C#

我有兩個字符串/文本文件:“ 1.dll”和“ 1a.dll”-1.dll包含“訂單ID”和“ cartID”(用輸入'/ n'分隔)-1a.dll是數據庫witdh“ id ”和“名稱”(以'/ n'分隔)

我將字符串拆分為字符串數組。 然后,我將每個數組字符串分成兩個字符串。 一個帶有偶數位置,另一個帶有奇數位置。 拆分兩個文件后,我將顯示4個數組字符串,並將其顯示到4個ListBoxes。 -來自1.dll的2個數組按應有的方式顯示-來自1a.dll的2個數組缺少某些值。 這是有問題的屏幕截圖

//Load and split "1.dll" > create 2 array strings. orderID=odd # position and cartID=even # position
        string a = File.ReadAllText(@"order/1.dll");
        string[] aa = a.Split('\n');
        aa = aa.Select(s => (s ?? "").Trim()).ToArray();
        string[] orderID = new string[aa.Length];
        string[] cartID = new string[aa.Length];

        int Dial1 = 0;
        int Dial2 = 0;
        for (int i = 0; i < aa.Length; i++)
        {
            if (i % 2 == 0)
            {
                orderID[Dial1] = aa[i];
                Dial1++;
            }
            else
            {
                cartID[Dial2] = aa[i];
                Dial2++;
            }
        }
        for (int j = 0; j < aa.Length / 2; j++)
        {
            AddToCartList.Items.Add(cartID[j]);
            OrderIDList.Items.Add(orderID[j]);
        }
//Load and split "1a.dll" > create 2 array strings. id=odd # position and game=even # position

        string b = File.ReadAllText(@"order/1a.dll");
        string[] bb = b.Split('\n');
        bb = bb.Select(s => (s ?? "").Trim()).ToArray();
        string[] id = new string[bb.Length / 2];
        id = id.Select(s => (s ?? "").Trim()).ToArray();
        string[] name = new string[bb.Length / 2];
        name = name.Select(s => (s ?? "").Trim()).ToArray();
        string combindedString = string.Join("\n", bb.ToArray());
        MessageBox.Show(combindedString);

        int Dial3 = 0;
        int Dial4 = 0;
        for (int i = 0; i < bb.Length / 2; i++)
        {
            if (i % 2 == 0)
            {
                id[Dial3] = bb[i];
                Dial3++;
            }
            else
            {
                name[Dial4] = bb[i];
                Dial4++;
            }
        }
        for (int j = 0; j < bb.Length / 2; j++)
        {
            IDlist.Items.Add(id[j]);
            nameList.Items.Add(name[j]);
        }




        for (int i = 0; i < id.Length; i++)
        {
            if (orderID[0] == id[i])
            {
                textBox1.Text = name[0];
            }
            if (orderID[2] == id[i])
            {
                textBox2.Text = name[1];
            }
            if (orderID[2] == id[i])
            {
                textBox3.Text = name[1];
            }
        }

在第二個循環中,運行循環以獲取bb數組內容的一半

for (int i = 0; i < bb.Length / 2; i++)

這應該是

for (int i = 0; i < bb.Length; i++)

但是除此之外,可以使用通用的List<T>而不是創建太多的臨時數組來對該代碼進行很多更改,

例如,第一個循環可以寫成

// ReadAllLines already returns your text file splitted at newlines
string[] aa = File.ReadAllLines(@"order/1.dll");

// With lists you don't need to create a fixed size array in advance...
List<string> orders = new List<string>();
List<string> carts = new List<string>();

// Your array could be iterated two items at times 
// Of course here a check for even number of items should be
// added here....
for (int i = 0; i < aa.Length; i += 2)
{
     orders.Add(aa[i]);
     carts.Add(aa[i+1]);
}
// The collections have the possibility to add a range of items
// without you writing a loop 
AddToCartList.Items.AddRange(carts.ToArray());
OrderIDList.Items.AddRange(orders.ToArray());

錯誤在這里:

    int Dial3 = 0;
int Dial4 = 0;
for (int i = 0; i < bb.Length / 2; i++)

長度應該是bb.Length不帶/ 2;

暫無
暫無

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

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