9

Is it possible to save value of txtSearche in array splitted into seperate words?

txtSearche = "put returns between paragraphs";

something like this:

 StringBuilder sb = new StringBuilder(txtSearche);

array1 = sb[1]   = put
array2 = sb[2]   = returns
array3 = sb[3]
array4 = sb[4]
array5 = sb[5]

how to do it correct?

7 Answers 7

22

Yes try this:

string[] words = txtSearche.Split(' ');

which will give you:

words[0]   = put
words[1]   = returns
words[2]   = between
words[3]   = paragraphs

EDIT: Also as Adkins mentions below, the words array will be created to whatever size is needed by the string that is provided. If you want the list to have a dynamic size I would say drop the array into a list using List wordList = words.ToList();

EDIT: Nakul to split by one space or more, just add them as parameters into the Split() method like below:

txtSearche.Split(new string[] { " ", "  ", "   " }, StringSplitOptions.None);

or you can tell it simply to split by a single space and ignore entries that are blank, caused by consecutive spaces, by using the StringSplitOptions.RemoveEmptyEntries enum like so

txtSearche.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
Sign up to request clarification or add additional context in comments.

3 Comments

It is also worth mentioning that the words array will be created to whatever size is needed by the string that is provided. If you want the list to have a dynamic size I would say drop the array into a list using List<string> wordList = words.ToList<string>();
@Adkins: Thanks I'll add it to the answer
I want to know what return when consecutive spaces in string
4

You could use String.Split.

1 Comment

And, yes, there's also a Join.
2

Below example will split the string into an array with each word as an item...

string[] words = txtSearche.Split(' ');

You can find more details here

Comments

2

None of above work with multiple spaces or new line!!!

Here is what works with them:

 string text = "hi!\r\nI am     a wonderful56 text... \r\nyeah...";
 string[] words =Regex.Split(text, @"\s+", RegexOptions.Singleline);

If you need to remove ellipsis then more processing is required and i can give you that as well.

UPDATE

In fact this is better:

 string text = "hi!\r\nI am     a wonderful56 text... \r\nyeah...";
 MatchCollection matches = Regex.Matches(text, @"[\w\d_]+", RegexOptions.Singleline);
 foreach (Match match in matches)
 {
   if(match.Success)
      Console.WriteLine(match.Value);
  }

Outputs:

hi I am a wonderful56 text yeah

1 Comment

That's not entirely true, String.Split has an overload that takes an array of split characters, and an option to skip empty entries, so you could use text.Split(" \t\r\n\x85\xA0.,;:!?()-\"".ToCharArray(), StringSplitOptions.RemoveEmptyEntries). If you're going to go all the way to regex though, @"\W+(?<!')" would be better than @"\s+", since it would remove punctuation as well (the (?<!') is to protect contractions and possessives, with the unfortunate side effect that it won't remove single quotes).
1
StringBuilder sb = new StringBuilder(txtSearche); 

var result  =  sb.Tostring().Split(' '); 

1 Comment

new StringBuilder(txt).ToString() = no-op
1

If you want a more complete solution and don't exactly worry about performance, you can have this one-liner take care of punctuation, etc. and give you an array of only the words.

string[] words = Regex.Replace(Regex.Replace(text, "[^a-zA-Z0-9 ]", " "), @"\s+", " ").Split(' ');

1 Comment

This adds an empty string entry to the beginning or end of the array (or both) if the source text has whitespaces at the beginning or end. So it needs Trim() before using.
0
private void button1_Click(object sender, EventArgs e)
{
    string s = textBox1.Text;            
    string[] words = s.Split(' ');           
    textBox2.Text = words[0];
    textBox3.Text = words[1];
}

Comments

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.