Create key and pair

Hello, I have a string list.
GO-1212a	GO-1212b	GO-1213a	GO-1213b	GO-1214a	GO-1214b	GO-1215a	GO-1215b	GO-1216a	GO-1216b	GO-1217a	GO-1217b	GO-1218a	GO-1218b	GO-1219a	GO-1219b	GO-1220a	GO-1220b	GO-1221a	GO-1221b	GO-1222a	GO-1222b	GO-1223a	GO-1223b	GO-1224a	GO-1224b	GO-1225a	GO-1225b	GO-1226a	GO-1226b	GO-1227a	GO-1227b	NA 7029a	NA 7029b	No DNAa	No DNAb

Open in new window


I want to use regular expression to create the pairs
GO-1212a	GO-1212b
GO-1213a	GO-1213b
GO-1214a	GO-1214b
GO-1215a	GO-1215b
GO-1216a	GO-1216b
GO-1217a	GO-1217b
GO-1218a	GO-1218b
GO-1219a	GO-1219b
GO-1220a	GO-1220b
GO-1221a	GO-1221b
GO-1222a	GO-1222b
GO-1223a	GO-1223b
GO-1224a	GO-1224b
GO-1225a	GO-1225b
GO-1226a	GO-1226b
GO-1227a	GO-1227b
NA 7029a	NA 7029b
No DNAa	No DNAb

Open in new window

I used to use a per-processing data such as remote the prefix, but I am not satisfied it.Thanks
zhshqzycAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
käµfm³d 👽Connect With a Mentor Commented:
I'm not sure if I fully understand the requirement, but I'll take a stab at it  = )

See if this is what you're after:
List<string> list1 = new List<string>()
{
    "GO-1212a", "GO-1212b", "GO-1213a", "GO-1213b", "GO-1214a", "GO-1214b",
    "GO-1215a", "GO-1215b", "GO-1216a", "GO-1216b", "GO-1217a", "GO-1217b",
    "GO-1218a", "GO-1218b", "GO-1219a", "GO-1219b", "GO-1220a", "GO-1220b",
    "GO-1221a", "GO-1221b", "GO-1222a", "GO-1222b", "GO-1223a", "GO-1223b",
    "GO-1224a", "GO-1224b", "GO-1225a", "GO-1225b", "GO-1226a", "GO-1226b",
    "GO-1227a", "GO-1227b", "NA 7029a", "NA 7029b", "No DNAa", "No DNAb"
};

Dictionary<string, List<int>> categorized = new Dictionary<string, List<int>>();

for (int i = 0; i < list1.Count; i++)
{
    string key = list1[i].Substring(0, list1[i].Length - 1);

    if (!categorized.ContainsKey(key))
    {
        categorized.Add(key, new List<int>());
    }

    categorized[key].Add(i);
}

Open in new window

0
 
käµfm³d 👽Commented:
Like this?

string source = "GO-1212a	GO-1212b	GO-1213a	GO-1213b	GO-1214a	GO-1214b	GO-1215a	GO-1215b	GO-1216a	GO-1216b	GO-1217a	GO-1217b	GO-1218a	GO-1218b	GO-1219a	GO-1219b	GO-1220a	GO-1220b	GO-1221a	GO-1221b	GO-1222a	GO-1222b	GO-1223a	GO-1223b	GO-1224a	GO-1224b	GO-1225a	GO-1225b	GO-1226a	GO-1226b	GO-1227a	GO-1227b	NA 7029a	NA 7029b	No DNAa	No DNAb";
string result = System.Text.RegularExpressions.Regex.Replace(source, @"(\w{2}[- ]\w+\s+\w{2}[- ]\w+)\s+", "$1\n");

Open in new window

0
 
strickddCommented:
This may not be exact because of fringe cases, but should be close for you:

[A-Za-z0-9\-]*a\t{1}[A-Za-z0-9\-]*b\t
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
zhshqzycAuthor Commented:
I am sorry. It is a list of strings. I want to create a key for each pair then get each index of string in the array. How to modify the code below?
List<string> list1 = new List<string>();
list1.Add("GO-1212a");
list1.Add("GO-1212b");
....
Dictionary<string, List<int>> categorized = new Dictionary<string, List<int>>();
string[] header1 = list1.ToArray();
                for (int i = 0; i < header1.Length; i++)
                {
                    string key = header1[i].Substring(); //here need some work
                    System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(key, "^\\w{2}[- ]\\w+\\s+\\w{2}[- ]\\w+)\\s+"); //here also need work
                    if (m.Success)
                    {
                        if (!categorized.ContainsKey(m.Value))
                        {
                            categorized.Add(m.Value, new List<int>());
                        }

                        categorized[m.Value].Add(i);
                    }

                }

Open in new window

0
 
käµfm³d 👽Commented:
I don't understand where the regular expression part is supposed to come into play. Can you elaborate?
0
 
zhshqzycAuthor Commented:
It is a long story.
Actually I want to create a dictionary, the results like

key:
GO-1012
Value:{0,1}

key:
GO-1013
Value: {2,3}

...
key:
NA 7029
Value:
{n,n+1} something like.
0
All Courses

From novice to tech pro — start learning today.