Click here to Skip to main content
15,894,362 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am getting a string like

50' FRAME CABLE 2W (6X)50' FRAME CABLE 3W (9X)

but i want to show it like 50' FRAME CABLE (2W (6X),3W (9X))

In this line i am getting the value

C#
StringBuilder terminalBoxSummary = GetFrameCableSensorCableSummary(terminalBoxs);


C#
private static StringBuilder GetFrameCableSensorCableSummary(List<SageControlBase> igus_Sensors)
      {

          var frameCables2WCount = igus_Sensors.Where(x => ((x as IGUs) != null && (x as IGUs).BusBars == SageConstants.BusBarsTypes.Two));
          var frameCables3WCount = igus_Sensors.Where(x => ((x as IGUs) != null && (x as IGUs).BusBars == SageConstants.BusBarsTypes.Three));
          var frameCables4WCount = igus_Sensors.Where(x => ((x as IGUs) != null && (x as IGUs).BusBars == SageConstants.BusBarsTypes.Four));

          var sensorcables2WCount = igus_Sensors.Where(x => ((x as Sensors) != null && (x as Sensors).BusBars == SageConstants.BusBarsTypes.Two));
          var sensorcables3WCount = igus_Sensors.Where(x => ((x as Sensors) != null && (x as Sensors).BusBars == SageConstants.BusBarsTypes.Three));
          var sensorcables4WCount = igus_Sensors.Where(x => ((x as Sensors) != null && (x as Sensors).BusBars == SageConstants.BusBarsTypes.Four));

          StringBuilder frameCableSummary = new StringBuilder();

          foreach (var group in frameCables2WCount.GroupBy(x => (x as IGUs).FrameCableLength))
          {
              if (group.Count() > 0)
                  frameCableSummary.AppendLine(string.Format("{0}' FRAME CABLE 2W ({1}X)", (group.FirstOrDefault() as IGUs).FrameCableLength.ToString(), group.Count().ToString()));
          }

          foreach (var group in frameCables3WCount.GroupBy(x => (x as IGUs).FrameCableLength))
          {
              if (group.Count() > 0)
                  frameCableSummary.AppendLine(string.Format("{0}' FRAME CABLE 3W ({1}X)", (group.FirstOrDefault() as IGUs).FrameCableLength.ToString(), group.Count().ToString()));
          }

          foreach (var group in frameCables4WCount.GroupBy(x => (x as IGUs).FrameCableLength))
          {
              if (group.Count() > 0)
                  frameCableSummary.AppendLine(string.Format("{0}' FRAME CABLE 4W ({1}X)", (group.FirstOrDefault() as IGUs).FrameCableLength.ToString(), group.Count().ToString()));
          }

          foreach (var group in sensorcables2WCount.GroupBy(x => (x as Sensors).FrameCableLength))
          {
              if (group.Count() > 0)
                  frameCableSummary.AppendLine(string.Format("{0}' SENSOR CABLE 2W ({1}X)", (group.FirstOrDefault() as Sensors).FrameCableLength.ToString(), group.Count().ToString()));
          }

          foreach (var group in sensorcables3WCount.GroupBy(x => (x as Sensors).FrameCableLength))
          {
              if (group.Count() > 0)
                  frameCableSummary.AppendLine(string.Format("{0}' SENSOR CABLE 3W ({1}X)", (group.FirstOrDefault() as Sensors).FrameCableLength.ToString(), group.Count().ToString()));
          }

          foreach (var group in sensorcables4WCount.GroupBy(x => (x as Sensors).FrameCableLength))
          {
              if (group.Count() > 0)
                  frameCableSummary.AppendLine(string.Format("{0}' SENSOR CABLE 4W ({1}X)", (group.FirstOrDefault() as Sensors).FrameCableLength.ToString(), group.Count().ToString()));
          }
          return frameCableSummary;
      }
Posted
Updated 29-Dec-14 1:07am
v3
Comments
Suvendu Shekhar Giri 29-Dec-14 6:50am    
Please format the code so that others can understand and accordingly can help you :)
Garth J Lancaster 29-Dec-14 6:51am    
What is the definition of [GetFrameCableSensorCableSummary] Procedure - what does it return ?
chandra sekhar 29-Dec-14 6:53am    
It Returns this string 50' FRAME CABLE 2W (6X)50' FRAME CABLE 3W (9X)
Garth J Lancaster 29-Dec-14 6:56am    
we cant help you if you don't show da code for that procedure
chandra sekhar 29-Dec-14 7:08am    
I have updated the question

Example of one approach that does not use RegEx:
C#
private string dString = @"50' FRAME CABLE 2W (6X)50' FRAME CABLE 3W (9X) 50' FRAME CABLE 4W (9X)";
  
private string fancyOutput(string source)
{
    string[] parse = source.Split(new string[] {"FRAME CABLE"}, StringSplitOptions.RemoveEmptyEntries);

    StringBuilder sb;

    if (parse.Length >= 2)
    {
        string first = parse[0];

        sb = new StringBuilder(first + "Frame Cable (");

        for (int i = 1; i < parse.Length; i++)
        {
            sb.Append(parse[i].Replace(first, ""));
            sb.Append(",");
        }

        sb.Remove(sb.Length - 1, 1);
        sb.Append(")");

        string result = sb.ToString();

        // for debugging only
        Console.WriteLine(result());

        return result;
    }
    else
    {
        return "something went wrong: check input string";
    }
}
 
Share this answer
 
replace 50' FRAME CABLE with (,) using Regx skiping first occurence.
Your will get string like-
50' FRAME CABLE 2W (6X),3W (9X),4W (9X)
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900