在文本框中輸入幾個句子後,我需要通過單擊按鈕在文本框中找到最長的句子。最長的句子應顯示在MessageBox中。如何在文本框中找到最長的句子和平均句子長度?
另一個按鈕應該在MessageBox中顯示句子的平均長度。
在文本框中輸入幾個句子後,我需要通過單擊按鈕在文本框中找到最長的句子。最長的句子應顯示在MessageBox中。如何在文本框中找到最長的句子和平均句子長度?
另一個按鈕應該在MessageBox中顯示句子的平均長度。
好的,我是新手,但我會盡力幫忙!
我會看看在文本框中輸入的句子分割成數組或列表,然後處理它。
Dim sentences As String()
sentences = TextBox1.Text.Split("?")
Dim avgSum As Double = 0
Dim avg As Integer = 0
Dim longest As Integer = 0
For Each sentence As String In sentences
If sentence.Length < longest Then longest = sentence.Length
avgSum = avgSum + sentence.Length
Next
avg = avgSum/sentences.Length
MsgBox("Average is: " + avg)
MsgBox("Longest is: " + longest)
定義三個功能:第一功能,以提取所有的句子,所述第二確定最長句子,和第三,以確定平均句子長度。
提取所有句子
''' <summary>
''' Extracts all sentences from a text block. It is assumed that a sentence is terminated by either a period (.), a question mark (?), or an exclamation mark (!).
''' </summary>
''' <param name="text">The text block as string.</param>
''' <returns>An array of sentences.</returns>
''' <remarks></remarks>
Function sentences(ByVal text As String) As String()
Dim snts(Len(text)) As String
Dim curPeriodPos As Integer
Dim nextPeriodPos As Integer
Dim longestSnt As String
Dim nextSnt As String
Dim i As Integer
text = text + " "
text = Replace(text, "? ", ". ")
text = Replace(text, "! ", ". ")
curPeriodPos = InStr(text, ". ")
longestSnt = Mid(text, 1, curPeriodPos)
i = 0
Do While curPeriodPos + 1 < Len(text)
nextPeriodPos = InStr(curPeriodPos + 1, text, ". ")
nextSnt = Mid(text, curPeriodPos + 1, nextPeriodPos - curPeriodPos + 1)
snts(i) = nextSnt
i += 1
curPeriodPos = nextPeriodPos
Loop
Return snts
End Function
確定最長的句子
''' <summary>
''' Determines the longest sentence among an array of senetences.
''' </summary>
''' <param name="sentencesArray">A string array of sentences.</param>
''' <returns> A sentence as string.</returns>
''' <remarks></remarks>
Function longestSentence(ByVal sentencesArray() As String) As String
Dim longestSnt As String = ""
For Each sentence As String In sentencesArray
If Len(sentence) > Len(longestSnt) Then
longestSnt = sentence
End If
Next sentence
Return longestSnt
End Function
確定平均句子長度
''' <summary>
''' Determines the average sentence length of sentences in an array of sentences.
''' </summary>
''' <param name="sentencesArray">A string array of sentences.</param>
''' <returns>An integer representing the average sentence length.</returns>
''' <remarks></remarks>
Function averageSentenceLength(ByVal sentencesArray() As String) As Double
Dim sentenceLengths(sentencesArray.Length) As Integer
Dim total As Integer = 0
Dim average As Double
Dim counter As Integer = 0
For i As Integer = 0 To sentencesArray.Length - 1
sentenceLengths(i) = Len(sentencesArray(i))
If sentenceLengths(i) > 0 Then
total += sentenceLengths(i)
counter += 1
End If
Next i
average = CDbl(total)/CDbl(counter)
Return average
End Function
個
這些功能可以在按鈕的事件處理程序調用如下:
Private Sub DisplayLongestSentence() Handles longestSententeceButton.Click
Dim text As String = TextBox1.Text
MessageBox.Show(longestSentence(sentences(text)))
End Sub
Private Sub DisplayAverageSentenceLength() Handles averageSententeceLengthButton.Click
Dim text As String = TextBox1.Text
MessageBox.Show(averageSentenceLength(sentences(text)))
End Sub
對於這兩個,只是句子排序,那麼,這取決於你如何排序選擇第一個或最後一個元素,如最長的,那麼平均要麼是大小爲/ 2的元素,要麼可能需要計算長度並找到最接近的元素。這取決於你如何定義平均句子。 – 2011-05-22 20:27:35
這是爲學校工作嗎?如果是這樣,我認爲你應該試着告訴我們你已經有了什麼想法。否則,您可以剪切並粘貼下面的答案,但您會學到什麼?如果你想成爲一名程序員,解決問題就是90%的工作。 – 2011-05-23 12:18:14