2013-05-17 104 views
1

我正在學習一個超越Visual Basic的介紹性編程類,如果大家都願意指出正確的方向,我需要一些幫助。這是一項挑戰性任務,我應該自己弄清楚如何自己做這些事情,但我一直無法找到任何事情。計算字符串中的單詞

我要做的是讓程序計算一個字符串中的字數,然後打印這個數字。我在網上看無濟於事,我還沒有學會如何在課堂上做類似的事情。任何你可以提供給我的幫助將不勝感激。我知道你不喜歡做家庭作業,但是我真的很失落。

+5

String類,Split方法,Array類,Length屬性。這些是提示搜索 – Steve

+0

此問題已被詢問。請參閱:http://stackoverflow.com/questions/16577586/counting-words-from-a-string-builder/16577701#comment23824291_16577701,http://stackoverflow.com/questions/1633116/word-count-algorithm-in -c-sharp?lq = 1 – 2power10

+0

define word?這些角色是由空白分隔還是更復雜?你想計算一次以上出現的單詞,同一單詞的不同拼寫怎麼樣?你需要做自然語言分析嗎? – Jodrell

回答

1

一個起點,至少在VBA(和VB有類似的功能,但我不知道你使用的是哪個版本),是使用VBA.Split;例如

VBA.Split(s,「」)其中s是要分割的字符串和「」分隔符(粗略地說,我們假設所有單詞都用空格分隔)。

該函數返回一個字符串數組。您可以使用UBound和LBound函數來獲取數組的大小。例如。

Sub test() 
    Dim s As String 
    Dim arr() As String 

    arr = VBA.Split("Hello there", " ") 

    Debug.Print UBound(arr) - LBound(arr) + 1 

End Sub 

這將打印2.

編碼愉快!

+0

好,太壞了,海報想用vb.net – Steve

0

你可以調用一個函數是這樣的:

Public Function CountWords(ByVal value As String) As Integer 
    ' Count matches. 
    Dim collection As MatchCollection = Regex.Matches(value, "\S+") 
    Return collection.Count 
    End Function 

或拆分給定的字符串與空格字符,並得到數組的長度。

+0

這不就是一個或多個空間嗎? – Jodrell

+0

實際上它會計數空格 – Kuzgun

1

OK,讓我們說你的字符串是這樣的:

string ThisIsYourSentence = "This is some pretty long and annoying sentence, now, isn't it?"; 

你注意到,每個字從其他由間隔「」分開。在C#中有一種內置方法,它通過檢查將字符串分開的特殊字符來分隔字符串中的字符串:

對於您的解決方案,您只需創建一個新數組,每當「會遇到字符,會填寫一個字。 P:哦,對不起,我甚至沒有看到你的意思是VisualBasic,不是C#。

+0

那些用'「 - 」隔開的單詞怎麼樣?或者是多個空格或其他標點符號的組合? +1使用正確的語言和正確的方向標題並解釋。 – Jodrell

+0

那麼,你只需要使用.Split(' - ')或任何分隔符的符號。如果你有符號的組合,猜測你將不得不爲每種情況寫一些更復雜的檢查。 P.S:我確定應該有一個像Visual Basic中的.Split這樣的內置函數。通過編寫新的複雜方法,您無法自行發現沸水。 :P – Placeholder

+0

[字符串上的拆分方法](https://msdn.microsoft.com/en-us/library/system.string.split%28v=vs.110%29.aspx)是.NET的一部分,可以從任何.NET語言中使用,包括C#和VB.NET。 –