簡體   English   中英

如何在C#中對Arraylist的每個索引中的元素進行計數

[英]how to count an element in each index of Arraylist in c#

首先,我有一個包含所有字符的字符串,然后將其添加到list1的Arraylist中,但用*分隔。 所以現在我有5個arraylist元素。

String fString = "DAVCFW_ACK*DAVCFW_20_30_90*DAVCFW_15.5_20.1_35.0*DAVCFW_40_230_110*DAVCFW_END";
ArrayList list1 = new ArrayList();
string[] words = fString.Split('*');
foreach (string s in words)
{
    list1.Add(s);
 }

其次,我刪除每個元素的前6個字符,並將其保留在list2的Arraylist中。

ArrayList list2 = new ArrayList();
String s1 = list1.ToString();
foreach(string s in list1){
    for (int i = 0; i < s.Length; i++ ){
         if(i>6){
             list2[i-7] = list1[i];
         }
    }
}

第三,刪除每個元素的所有_字符,並將其保留在list3的Arraylist中。 現在我只得到數字而不是字符。

ArrayList list3 = new ArrayList();
String[] word_s1 = s1.Split('_');
foreach(string s in word_s1){
     list3.Add(s);
}

然后,我想像矩陣一樣保留list3的值,但仍然是Arraylist。 我需要知道list3的每個索引中的元素數才能定義行和列。 對於列,我想我可以使用list3.count;。 但對於行,我不知道如何。 之后我知道排。 我必須為行數少於行數的每個索引中的元素添加0。

請幫幫我。 謝謝。

您曾經運行此代碼嗎? 首先,它不起作用,因為在第二個清單中,您嘗試獲取list1[7] ,其中最后一個索引為5。其次,在同一清單中,您正在子循環中訪問元素,而不是字符。 第三,為什么要執行String s1 = list1.ToString() s1等於字符串"System.Collections.ArrayList"

回到您的問題。 如果要獲取每一行的長度,只需使用string.Length屬性。 這是工作代碼:

String fString = "DAVCFW_ACK*DAVCFW_20_30_90*DAVCFW_15.5_20.1_35.0*DAVCFW_40_230_110*DAVCFW_END";
ArrayList list1 = new ArrayList();
string[] words = fString.Split('*');
foreach (string s in words)
{
    list1.Add(s);
}

ArrayList list2 = new ArrayList();
foreach(string s in list1)
{
    list2.Add(s.Substring(6));
}

ArrayList list3 = new ArrayList();
foreach (string s in list2)
{
    list3.Add(s.Replace("_", string.Empty));
}

foreach (string s in list3)
{
    Console.WriteLine(s);
}

Console.WriteLine("Number of rows: {0}", list3.Count);
for (int i = 0; i < list3.Count; i++)
{
    Console.WriteLine("Number of characters in {0} row: {1}",i, (list3[i] as string).Length);
}

問題不是很清楚你想要什么。 如果將項目位置的矩陣作為列,將值作為行,則可以嘗試這樣的操作。

String fString = "DAVCFW_ACK*DAVCFW_20_30_90*DAVCFW_15.5_20.1_35.0*DAVCFW_40_230_110*DAVCFW_END";

Dictionary<int, ArrayList> matrix = new Dictionary<int,ArrayList>();
string[] words = fString.Split('*');
for (int i = 0; i < words.Length - 2 ; i++) // exclude the first and the last words because they do not have number
{
     string[] numbers = words[i+1].Substring(6).Split('_');
     ArrayList list = new ArrayList();
     for (int j = 1; j < numbers.Length; j++) // exlcude the first number as it is empty string
     {
         list.Add(numbers[j]);
     }
     matrix[i] = list;
}

暫無
暫無

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

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