• Status: Solved
• Priority: Medium
• Security: Public
• Views: 84

# c# special format

my string x will come from xml file and I do not know how many items will be there. may 10, may 100.
And now I want to extract as below. How can I do that in c#?

string x = [KDAV(100),KDX(200),CSGW(300)]

extract to

string model = "KDAV,KDX,CSGW";
string qty = "100,200,300";
0
ITsolutionWizard
1 Solution

Independent ConsultantCommented:
This works:

``````static void Main(string[] args)
{
string x = "[KDAV(100),KDX(200),CSGW(300)]";

x = x.Replace("[", string.Empty);
x = x.Replace("]", string.Empty);
x = x.Replace(")", string.Empty);
string[] y = x.Split(new char[] { ',' });

string model = string.Empty;
string qty = string.Empty;

for (int i = 0; i < y.Length; i++)
{
string[] z = y[i].Split(new char[] { '(' });
model += z[0] + ",";
qty += z[1] + ",";
}

model = model.Remove(model.Length - 1, 1);
qty = qty.Remove(qty.Length - 1, 1);
}
``````
0

RetiredCommented:
Hi ITsolutionWizard;

This salution assumes that the model can be from 1 - 4 characters and the quantity can have a value from 0 - 999. If that is not correct let me know and I will modify the regular expression

``````// Test Data
string x = "[KDAV(100),KDX(200),CSGW(300)]";
// Remove the [ and ] around the string
x = x.Trim(new char[] {'[',']'});
// Parse out the model and qty for each value using Regular Expression
var matches = Regex.Matches(x, @"([a-zA-Z]{1,4})\((\d{1,3})\)");

// Fill the result strings with the values
string model = "";
string qty = "";
foreach( Match m in matches )
{
model += m.Groups[1] + ",";;
qty += m.Groups[2] + ",";
}

// Remove the last comma in the string
model = model.Trim(new char[] {','});
qty = qty.Trim(new char[] {','});
``````
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.