Solved

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

Posted on 2010-09-02
8
310 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
 
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
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
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

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Programmatically signing Word macros 4 61
SQL Login 17 38
System.Speech 2 9
Javascript and Jquery not firing 9 37
More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
A short film showing how OnPage and Connectwise integration works.
This is a video that shows how the OnPage alerts system integrates into ConnectWise, how a trigger is set, how a page is sent via the trigger, and how the SENT, DELIVERED, READ & REPLIED receipts get entered into the internal tab of the ConnectWise …

919 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now