Подсчет количества слов на JS

Bakalov

Client
Регистрация
08.05.2014
Сообщения
52
Благодарностей
0
Баллы
6
Всем привет. Есть задача - посчитать количество слов в тексте. В программировании не силен, поэтому вариант C# изначально не рассматривал. Нашел в сети сайт, который считает количество слов на JS:
web-ru.net/services/poschitat-kolichestvo-simvolov-i-slov-v-tekste-onlajn/
Содрал у него код, который должен считать слова:
Код:
var Text="При наличии товара, доставкa заказчику или в транспортную компанию осуществляется на следующий день после получения средств на наш расчетный счет.";
var W=Text.match(/\S+?\s|\S+?$/g).length;
В Зенке этот код возвращает в переменную число 17, хотя если проверять этот же текст ("При наличии товара, доставкa заказчику или в транспортную компанию осуществляется на следующий день после получения средств на наш расчетный счет.") на сайте, то там считает правильно - 20 слов.
Подскажите в чем косяк? Или может есть у кого готовый код на C#?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
  • Спасибо
Реакции: squirrel и Bakalov

Bakalov

Client
Регистрация
08.05.2014
Сообщения
52
Благодарностей
0
Баллы
6
Попробовал код:
Код:
// Count words in string
var inputstring = project.Variables["text"].Value;
string texttostring = (inputstring);
int count = texttostring.Split(' ').Length;
return count;
Положил в переменную вот такой текст:
При наличии товара, доставкa заказчику или в транспортную компанию осуществляется на следующий день после получения средств на наш расчетный счет.
При наличии товара, доставкa заказчику или в транспортную компанию осуществляется на следующий день после получения средств на наш расчетный счет.
В переменную вернулось "39", по всей видимости не корректно обрабатывается перенос строки.
Также попробовал с двойными пробелами:
При наличии товара, доставкa заказчику или в транспортную компанию осуществляется на следующий день после получения средств на наш расчетный счет.
Результат тот же - "39", я так понимаю этот код просто пробелы считает, а это не совсем верно.
 

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
Странно, мне код вернул 20 в обоих случаях.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Код:
string pattern = "[^\\w]";
        //get all spaces and other signs, like: '.' '?' '!'
        string input = project.Variables["text"].Value;
        string[] words = null;
        int i = 0;
        int count = 0;
        words = Regex.Split(input, pattern, RegexOptions.IgnoreCase);
        for (i = words.GetLowerBound(0); i <= words.GetUpperBound(0); i++) {
            if (words[i].ToString() == string.Empty)
                count = count - 1;
            count = count + 1;
        }
return count;
попробуйте так, правда я не тестил
 
  • Спасибо
Реакции: name7778 и lexone

Bakalov

Client
Регистрация
08.05.2014
Сообщения
52
Благодарностей
0
Баллы
6

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
А вы в каком экшене код выполняете? JS или C#?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Все работает только в директивы using нужно добавить
Код:
using System.Text.RegularExpressions;
 
  • Спасибо
Реакции: caine

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
Код:
string pattern = "[^\\w]";
        //get all spaces and other signs, like: '.' '?' '!'
        string input = project.Variables["text"].Value;
        string[] words = null;
        int i = 0;
        int count = 0;
        words = Regex.Split(input, pattern, RegexOptions.IgnoreCase);
        for (i = words.GetLowerBound(0); i <= words.GetUpperBound(0); i++) {
            if (words[i].ToString() == string.Empty)
                count = count - 1;
            count = count + 1;
        }
return count;
попробуйте так, правда я не тестил
Спасибо, очень помог))
 
  • Спасибо
Реакции: masterLomaster
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)