Как разбить текстовое значение на массив со словами в C #? - PullRequest
6 голосов
/ 09 сентября 2010

Можно ли сохранить значение txtSearche в массиве, разбитом на отдельные слова?

txtSearche = "put returns between paragraphs";

как-то так:

 StringBuilder sb = new StringBuilder(txtSearche);

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

как это исправить?

Ответы [ 7 ]

19 голосов
/ 09 сентября 2010

Да, попробуйте это:

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

, который даст вам:

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

РЕДАКТИРОВАТЬ: Кроме того, как Adkins упоминает ниже, массив слов будет создан с тем размером, который необходим для предоставленной строки. Если вы хотите, чтобы список имел динамический размер, я бы сказал, поместите массив в список с помощью List wordList = words.ToList ();

РЕДАКТИРОВАТЬ: Nakul , чтобы разделить на один пробел или более, просто добавьте их как параметры в метод Split(), как показано ниже:

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

или вы можете сказать ему просто разделить на один пробел и игнорировать пустые записи, вызванные последовательными пробелами, используя перечисление StringSplitOptions.RemoveEmptyEntries, например,

txtSearche.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
4 голосов
/ 09 сентября 2010

Вы можете использовать String.Split.

2 голосов
/ 09 сентября 2010

Ничто из вышеперечисленного не работает с несколькими пробелами или новой строкой !!!

Вот что с ними работает:

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

Если вам нужно удалить многоточиетогда потребуется дополнительная обработка, и я также могу дать вам это.

ОБНОВЛЕНИЕ

На самом деле это лучше:

 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);
  }

Выходы :

привет, я замечательный56 текст да

2 голосов
/ 09 сентября 2010

В следующем примере строка будет разбита на массив с каждым словом как элементом ...

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

Вы можете найти большедетали здесь

1 голос
/ 09 сентября 2010
StringBuilder sb = new StringBuilder(txtSearche); 

var result  =  sb.Tostring().Split(' '); 
0 голосов
/ 27 апреля 2016
private void button1_Click(object sender, EventArgs e)
{
    string s = textBox1.Text;            
    string[] words = s.Split(' ');           
    textBox2.Text = words[0];
    textBox3.Text = words[1];
}
0 голосов
/ 03 декабря 2015

Если вы хотите получить более полное решение и не беспокоитесь о производительности, вы можете попросить этот однострочный пункт позаботиться о пунктуации и т. Д. И дать вам массив только слов.

string[] words = Regex.Replace(Regex.Replace(text, "[^a-zA-Z0-9 ]", " "), @"\s+", " ").Split(' ');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...