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