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

C# 如何在c中计算Arraylist的每个索引中的元素#,c#,arraylist,indexing,element,C#,Arraylist,Indexing,Element,首先,我有一个包含所有字符的字符串,然后我将它添加到列表1的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 (stri

首先,我有一个包含所有字符的字符串,然后我将它添加到列表1的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个字符,并将其保存在列表2的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。我需要知道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”;
ArrayList list1=新的ArrayList();
string[]words=fString.Split('*');
foreach(单词中的字符串s)
{
清单1.添加(s);
}
ArrayList list2=新的ArrayList();
foreach(列表1中的字符串s)
{
列表2.添加(s.子字符串(6));
}
ArrayList list3=新的ArrayList();
foreach(列表2中的字符串s)
{
列表3.Add(s.Replace(“”,string.Empty));
}
foreach(列表3中的字符串s)
{
控制台。写入线(s);
}
WriteLine(“行数:{0}”,list3.Count);
for(int i=0;i
问题不是很清楚你想要什么。如果您要查找一个矩阵,其中项目位置为列,值为行,那么可以尝试以下操作

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;
}
String fString=“DAVCFW_ACK*DAVCFW_20_30_90*DAVCFW_15.5_20.1_35.0*DAVCFW_40_230_110*DAVCFW_END”;
字典矩阵=新字典();
string[]words=fString.Split('*');
for(int i=0;i
什么样的矩阵?
List
对你有好处吗?谢谢。那专栏呢DWait,现在我不明白你的问题:)你的行是
list3
中的元素,所以
list3.Count
给出了行数。列表中的每个元素都是您的单行。因为它们是字符串,所以可以通过访问
Length
属性来获取“列计数”。您可以使用字符进行操作,这样就可以编写逻辑来“将0放入每个索引中行数小于行数的元素”。如果您想要有显式的列和行,我建议使用
List
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;
}