Количество слов в строке - PullRequest
0 голосов
/ 13 ноября 2009

Как посчитать слова в документе, получить такой же результат, как и результат MS OFFICE?

Ответы [ 4 ]

0 голосов
/ 20 ноября 2013

Если вы берете весь документ в виде строки, этот код (в Java) может работать для вас:

private int wordCount(String str){
    String[] words = str.trim().split("\\s+");
    for (int i = 0; i < words.length; i++) {
        words[i] = words[i].replaceAll("[^\\w]", "");
    }
    return words.length;
}
0 голосов
/ 13 ноября 2009

В базовом разбиении слов для разделения слов используются пробелы и знаки препинания (.,?! "'И т. Д., А в действительности - любые не буквенно-цифровые или обычно символы).

Убедитесь, что вы пропускаете последовательности знаков препинания / пробелов вместо того, чтобы считать лишние «слова» между ними.

Вам придется решить, являются ли числа "словами" или нет. И будет ли "123 456,78 $" одним словом или тремя.

Вы также можете захотеть применить другие правила - например, если вы ищете слова в исходном коде, вы можете использовать символы + - = * / () & ^% $ как «пробел». Если у вас есть идентификаторы в стилях camelCase или PascalCase, вы можете взять найденные «слова» и проверить, есть ли в них символы верхнего регистра в середине или слова.

По сути, это простая проблема - вам просто нужно решить, что такое «слово». Вы можете быть настолько простым или сложным, насколько вам нравится.

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

0 голосов
/ 13 ноября 2009

Теоретически вам сначала нужно определить, что вы видите словом (см. Также пост Джейсона Уильямса). Затем вы открываете документ на любом языке, который вы планируете использовать для этого. Вы переводите документ из закрытого формата Microsoft во что-то красивое и чистое.

Тогда это просто вопрос подсчета вхождений вышеупомянутого определения слова.

Сложной частью здесь будет разбор офисного документа. К счастью для вас, Microsoft отказалась от своей фирменной спецификации формата !

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

В качестве альтернативы, если вы хотите показать, какой язык вы планируете использовать и какую операционную систему, все может быть намного проще (например, если вы работаете в Windows и у вас установлен Office, вы можете использовать OLE плагины.)

Кроме того, посмотрите на это сообщение в блоге об этом формате документов Office , содержащее некоторую полезную информацию (любезно предоставлено Google)

0 голосов
/ 13 ноября 2009

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

  1. Взять весь документ в виде строки.
  2. Разбить строку на пробел.
  3. Количество элементов в результирующей последовательности будет количеством слов в документе.
...