Найти самую короткую, среднюю и самую длинную длину текста в текстовом поле в Visual Basic - PullRequest
2 голосов
/ 26 апреля 2011

каков код для поиска самого короткого, среднего и самого длинного предложения из текстового поля

Ответы [ 4 ]

0 голосов
/ 26 апреля 2011
    Dim txtInput As String = "This is a test. This is also a test.  LONGWORDHERE?  This works too!"
    Dim Punctuation As Char() = {"?"c, "!"c, "."c, ";"c}

    Dim Sentences = (From mySent In txtInput.Split(Punctuation))

    Dim Avg As Double = Sentences.Average(Function(w) w.Length)
    Dim Max As Integer = Sentences.Max(Function(w) w.Length)
    Dim Min As Integer = Sentences.Min(Function(w) w.Length)

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

Это будет работать только для показанной пунктуации и будет включать пробелы в числе символов.

РЕДАКТИРОВАТЬ: Вы хотели бы получить минимум, который больше нуля по длине. Итак, эта строка станет ...

Dim Min As Integer = (From mySent In txtInput.Split(Punctuation) Where mySent.Length > 0).Min(Function(w) w.Length)

Я не знаю, что вы имеете в виду, когда говорите «полный стоп». Это обратная линия?

0 голосов
/ 26 апреля 2011

Ну, я думаю, что лучший способ сделать это - разделить текст в текстовом поле на что-то вроде:

Dim sSplitString As String() = TextBox1.Text.Split(New Char() {"."c})

Dim sBigSentence As String = String.Empty
Dim sSmallSentence As String = sSplitString(0)

For Each sVal As String In sSplitString
  'Figure out the big sentence
  If sVal.Length > sBigSentence.Length Then
    sBigSentence = sVal
  End If

  'Figure out the small sentence, you might also need to check and make sure the 
  ' the last value doesn't have a blank string.
  If sVal.Length < sSmallSentence.Length Then
    sSmallSentence = sVal
  End If

  'Average Sentence...
Next

Я не проверял это, но должно быть что-то вроде этого.Я дам вам понять, средняя часть предложения: P

0 голосов
/ 26 апреля 2011
// Something like this should work, remember you might have to trim
// testing for Max
// this is done in linqpad, hence the .Dump();


string txt = "This is the first sentence. Another one. Short";

var sentences = txt.Split('.').ToList();

var result = from s in sentences
             let max = sentences.Max(st=>st.Length)
             where s.Length == max
             select s;

result.Dump();
0 голосов
/ 26 апреля 2011

Не совсем точно, что вы спрашиваете, но в любом случае сделать снимок. Вы можете разделить текст на «.» а затем используйте LINQ для определения элементов, которые удовлетворяют этим критериям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...