如何在 C# 中计算 Arraylist 的每个索引中的元素

本文关键字:索引 元素 计算 Arraylist | 更新日期: 2023-09-27 18:13:18

首先,我有一个包含所有字符的字符串,然后将其添加到list1的Arraylist中,但我用*分隔它。 所以现在我有 5 个数组列表元素。

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 个 charecter 并将其保留到 list2 的数组列表中。

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];
         }
    }
}

第三,我删除每个 elemean 的所有 _ 个字符,并将其保留在 list3 的数组列表中。现在我只得到数字而不是字符。

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

然后我想保留 list3 的值,就像矩阵一样,但仍然是一个数组列表。我需要知道 list3 的每个索引中的元素数量来定义行和列。对于列,我想我可以使用列表3.count;但对于行我不知道如何。在我知道行之后。我必须在行数小于行的每个索引中的元素中将 0 放入

请帮助我。谢谢。

如何在 C# 中计算 Arraylist 的每个索引中的元素

你曾经运行过这段代码吗?首先它不起作用,因为在第二个列表中,您正在尝试获取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;
}