【问题标题】:In multiple arraylist i want duplicate values rename在多个arraylist中我想要重复的值重命名
【发布时间】:2013-08-04 11:54:40
【问题描述】:

如果我在多个arraylist 中有重复的字符串,我尝试了此代码,它会更新1_Maths,2_Maths

例如 在multiplearraylist中我有

数学

英文

数学

印地语

英文

所以我想要 o/p:

1_数学

1_中文

2_数学印地文

2_中文

我的代码是生成数组列表的代码

Dim col As Integer = 0
Dim dt As New DataTable

Dim ArraySubject(0, Grd.Columns.Count - 1) As String
For i As Integer = 0 To Grd.Columns.Count - 1
   If Grd.Columns(i).Visible = True Then
      ArraySubject(0, col) = GvSearch.HeaderRow.Cells(i).Text 
      col += 1
    End If
Next

用 c# 回答也会对我有所帮助。

【问题讨论】:

  • 你如何得到“2_Maths 印地语”???这是一个可怕的、可怕的问题。非常不清楚。
  • @ThomasW 我刚刚纠正了格式问题
  • 你为实现这篇文章所做的努力

标签: c# asp.net .net vb.net visual-studio-2008


【解决方案1】:

我不太了解 VB.NET,所以这就是我认为你想要的 C# :

string[] subjects = new string[] { "maths", "english", "maths", "hindi", "english" };

Dictionary<string, int> subjectCounts = new Dictionary<string, int> ();
foreach (string subject in subjects) {
    if (subjectCounts.ContainsKey(subject))
        subjectCounts[subject]++;
    else
        subjectCounts.Add(subject, 1);
}

List<string> output = new List<string>();
foreach (KeyValuePair<string, int> pair in subjectCounts) {
    if (pair.Value > 1) {
        for (int i = 1; i <= pair.Value; i++)
            output.Add(i + "_" + pair.Key);
    } else {
        output.Add(pair.Key);
    }
}

foreach (string subject in output)
    Console.WriteLine(subject);

这个输出:

1_数学

2_maths

1_中文

2_中文

印地语

如果要按数字排序,只需在输出之前对数组进行排序即可。

output.Sort();

输出:

1_中文

1_数学

2_中文

2_maths

印地语

【讨论】:

  • foreach (KeyValuePair pair in subjectCounts) { if (pair.Value > 1) { for (int i = 1; i
【解决方案2】:
private List<string> list = new List<string>();
private List<string> rslt = new List<string>();            
list.Add("math");
list.Add("science");
list.Add("math");
list.Add("science");

foreach (string i in list)
{
     rslt.Add(i);
}
foreach (string i in list)
{
     if (list.Count<string>(f => f == i) > 1)
     {
          int cnt = 1;
          int idx = 0;
          foreach (string j in list)
          {
               if (j == i)
               {
                    rslt[idx] = cnt.ToString() + "_" + j;
                    cnt++;
               }
               idx++;
           }
      }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2019-01-04
    • 2020-07-18
    • 2016-01-15
    • 2020-01-13
    • 2020-08-18
    • 2018-06-15
    相关资源
    最近更新 更多