3

How do you split a string?

Lets say i have a string "dog, cat, mouse,bird"

My actual goal is to insert each of those animals into a listBox, so they would become items in a list box.

but i think i get the idea on how to insert those items if i know how to split the string. or does anyone know a better way to do this?

im using asp c#

1
  • Why have people downvoted this question? I think it is a perfectly valid question. Commented Nov 12, 2008 at 14:35

5 Answers 5

8
    string[] tokens = text.Split(',');

    for (int i = 0; i < tokens.Length; i++)
    {
          yourListBox.Add(new ListItem(token[i], token[i]));
    }
Sign up to request clarification or add additional context in comments.

2 Comments

this is beautiful, simple... and it works, but with some minor modifications though.
Adyt, ZombieSheep is right, add .Trim() but guessing you got that. I wanted to illustrate as clearly the question asked and no more.
4

Have you tried String.Split? You may need some post-processing to remove whitespace if you want "a, b, c" to end up as {"a", "b", "c"} but "a b, c" to end up as {"a b", "c"}.

For instance:

private readonly char[] Delimiters = new char[]{','};

private static string[] SplitAndTrim(string input)
{
    string[] tokens = input.Split(Delimiters,
                                  StringSplitOptions.RemoveEmptyEntries);

    // Remove leading and trailing whitespace
    for (int i=0; i < tokens.Length; i++)
    {
        tokens[i] = tokens[i].Trim();
    }
    return tokens;
}

Comments

4

Needless Linq version;

from s in str.Split(',')
where !String.IsNullOrEmpty(s.Trim())
select s.Trim();

1 Comment

I think this version simply cause it removes the empty elements...cool!
3

Or simply:

targetListBox.Items.AddRange(inputString.Split(','));

Or this to ensure the strings are trimmed:

targetListBox.Items.AddRange((from each in inputString.Split(',')
    select each.Trim()).ToArray<string>());

Oops! As comments point out, missed that it was ASP.NET, so can't initialise from string array - need to do it like this:

var items = (from each in inputString.Split(',')
    select each.Trim()).ToArray<string>();

foreach (var currentItem in items)
{
    targetListBox.Items.Add(new ListItem(currentItem));
}

2 Comments

As far as I can tell, ListBox.Items.AddRange needs a ListItem[] rather than a String[] in ASP.NET.
You could also do this with "select new ListItem(each.Trim())", to keep things in linq, if you like that sort of thing.
1

It gives you a string array by strVar.Split

"dog, cat, mouse,bird".Split(new[] { ',' });

1 Comment

Creating a one-element char array is rather redundant. You can just pass a single char into the Split method directly.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.