2013-05-17 5 views
1

Я принимаю вводный класс программирования, который проходит через Visual Basic, и мне нужна помощь с назначением, если вы все так добры, чтобы указать мне в правильном направлении. Это своего рода вызов, и я должен выяснить, как это делать сам, но я ничего не смог найти на этом.Подсчет слов в строке

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

+5

Класс строки, метод разделения, класс массива, свойство длины. Это подсказки для поиска – 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

определить слово? Разве эти персонажи разделены пробелами или сложнее? Вы хотите посчитать слова, которые появляются не один раз, а что о разных написаниях одного и того же слова? Вам нужно сделать анализ естественного Лангауга. – 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# существует встроенный метод, который делает отдельные строки внутри строки, проверяя специальный символ, который их делит:

Для вашего решения вам просто нужно создать новый массив, который каждый раз, когда " символ встречается, заполняется словом.

string[] TheseAreYourWords = ThisIsYourSentence.Split(' '); 

P.S: Ой, извините, я даже не видел вас имел в виду VisualBasic, а не C#.

+0

как насчет слов, разделенных символом '' - "' или несколькими пробелами или другими комбинациями знаков препинания? +1 для использования правильного языка и заголовка в правильном направлении и объяснения. – Jodrell

+0

Ну, тогда вам просто нужно использовать .Split ('-') или любой другой символ, разделяющий. Если у вас есть комбинации символов, угадайте, вам придется писать несколько более «сложных» проверок для каждого случая. P.S: Я действительно уверен, что должна быть встроенная функция, например .Split в Visual Basic.Нет смысла открывать кипящую воду самостоятельно, написав новые сложные методы. : P – Placeholder

+0

[Метод разделения по строкам] (https://msdn.microsoft.com/en-us/library/system.string.split%28v=vs.110%29.aspx) является частью .NET и может использоваться на любом .NET-совместимом языке, включая C# и VB.NET. –

Смежные вопросы