Solved

How can i select some id with xx-xxx-xx-x format?

Posted on 2010-09-02
8
311 Views
Last Modified: 2013-11-11
i need to change below data

A320-ZL-522-01-1(2)
A320-ZL-531-01-1(1)
A320-ZL-531-01-1(2)
A320-ZL-531-01-1(1)
A320-ZL-531-01-1(2)
TO

ZL-522-01-1
ZL-531-01-1
ZL-531-01-1
ZL-531-01-1
ZL-531-01-1
Can i do it with linq using Regex?

    public class MatchCTallyToCross
    {
        public List<string> Get(string CustomerNumber)
        {
            IEngManager engManager = new EngManager();
            EngCustomerMyCross engCustomerMyCross = new EngCustomerMyCross();
            engManager.Load(engCustomerMyCross);
            return engCustomerMyCross.myEngCustomerCross.
                Where(c => c.ENG_CUSTOMERMYCROSS_CUSTOMER_NUMBER == CustomerNumber).
                Select(c => c.ENG_CUSTOMERMYCROSS_MYTECHNIC_TASK_NO).ToList();
        }
    }

Open in new window

c => c.ENG_CUSTOMERMYCROSS_MYTECHNIC_TASK_NO result is equal to "A320-ZL-531-01-1(2)" But i need "ZL-531-01-1"
0
Comment
Question by:programmerist
8 Comments
 
LVL 27

Expert Comment

by:nmarun
ID: 33594076
Here's a snippet that worked for me. I did not have to use Regex.

Arun

private static void GetFormattedString()
{
    List<string> items = new List<string>();
    items.Add("A320-ZL-522-01-1(2)");
    items.Add("A320-ZL-531-01-1(1)");
    items.Add("A320-ZL-531-01-1(2)");
    items.Add("A320-ZL-531-01-1(1)");
    items.Add("A320-ZL-531-01-1(2)");

    List<string> formattedStrings = (from item in items
                                        select item.Substring(5, 11)).ToList();

    for (int i = 0; i < formattedStrings.Count; i++)
    {
        Console.WriteLine(formattedStrings[i]);
    }
}

Open in new window

0
 
LVL 6

Expert Comment

by:nipunu
ID: 33594314
Use Substring
string string.substring(int startIndex,int length)


private static string getFormattedString(string originalstring)
{

string formattedString = originalstring.SubString(5,11);
return formattedString;
}

0
 

Author Comment

by:programmerist
ID: 33594398
but you can not know 5. character. it can be 4. or 3. or 6. character. we consantrate on "-" character...
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 
LVL 6

Accepted Solution

by:
nipunu earned 500 total points
ID: 33594524
Then u have to use split method as well

private static string getFormattedString(string originalstring)
{

//remove the (x) part from the string
string newString = originalstring.Substring (0, sList.Length-3);

//now split it
string[] words = newString.Split('-');

string finalString = words [1] + "-"+ words [2] + "-"+ words 3] + "-"+ words [4];
return formattedString;
}
0
 
LVL 27

Expert Comment

by:nmarun
ID: 33595119
And here's how you can do it with regex.

Arun

private static void GetFormattedString()
{
    List<string> items = new List<string>();
    items.Add("A320-ZL-522-01-1(2)");
    items.Add("A320-ZL-531-01-1(1)");
    items.Add("A320-ZL-531-01-1(2)");
    items.Add("A320-ZL-531-01-1(1)");
    items.Add("A320-ZL-531-01-1(2)");

    Regex regex = new Regex(@"[A-Za-z]{2}-\d{3}-\d{2}-\d");

    List<string> formattedStrings = (from item in items
                                        select regex.Match(item).Value).ToList();

    for (int i = 0; i < formattedStrings.Count; i++)
    {
        Console.WriteLine(formattedStrings[i]);
    }
}

Open in new window

0
 
LVL 27

Expert Comment

by:nmarun
ID: 33595373
Below is the improvised version of the previous code. The last one would give you an empty string if the match failed. I've avoided this by adding a where condition to the LINQ statement.

Arun

private static void GetFormattedString()
{
    List<string> items = new List<string>();
    items.Add("A320-ZL-522-01-1(2)");
    items.Add("A320-ZL-531-01-1(1)");
    items.Add("A320-ZL-531-01-1(2)");
    items.Add("A320-ZL-531-01-1(1)");
    items.Add("A320-ZL-531-01-1(2)");

    Regex regex = new Regex(@"[A-Za-z]{2}-\d{3}-\d{2}-\d");

    List<string> formattedStrings = (from item in items
                                        let m = regex.Match(item)
                                        where m.Success
                                        select m.Value).ToList();

    for (int i = 0; i < formattedStrings.Count; i++)
    {
        Console.WriteLine(formattedStrings[i]);
    }
}

Open in new window

0
 
LVL 8

Expert Comment

by:Gururaj Badam
ID: 33597679

public class MatchCTallyToCross
        {
            public List<string> Get(string CustomerNumber)
            {
                IEngManager engManager = new EngManager();
                EngCustomerMyCross engCustomerMyCross = new EngCustomerMyCross();
                engManager.Load(engCustomerMyCross);
                return engCustomerMyCross.myEngCustomerCross.
                    Where(c => c.ENG_CUSTOMERMYCROSS_CUSTOMER_NUMBER == CustomerNumber).
                    Select(c => c.ENG_CUSTOMERMYCROSS_MYTECHNIC_TASK_NO.SubString(c.ENG_CUSTOMERMYCROSS_MYTECHNIC_TASK_NO.IndexOf("-") +1)).ToList();
            }
        }

Open in new window

0
 
LVL 27

Expert Comment

by:nmarun
ID: 33838929
Any update on this?

Arun
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
In C# Using WebClient method how to post certificate from file with password 3 31
Graphics 2 28
Help with error when uploading excel file 3 27
MediaHelp 4 23
In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question