Список слов для игнорирования в JavaScript?

0

У меня есть таблица, которая создается из любого текста, вставленного в текстовое поле, с помощью плагина jQuery, Datatables. Я хочу игнорировать числа, а также большой список общих слов, таких как "и, или, для, но, и т.д.", Как я могу это сделать?

Вот мой текущий JavaScript:

<script>
        $( document ).ready( function() {

            $('form').submit(function(event){
                    event.preventDefault();
                    var
                            keyword_list = $('#searchtext').val().split(" "),
                            word_list = $('#searchtext').val().split(" "),
                            nwords = word_list.length;
                            $('#result').html(nwords + " Total Words in Article");
                    keyword_dict = {};
                    for (var i = 0, w; w = keyword_list[i]; i++) {
                            var w = w.replace(/\W/g,'');
                            keyword_dict[w] = 0;
                    }
                    for (var i = 0, w; w = word_list[i]; i++) {
                            var w = w.replace(/\W/g,'');
                            for(var keyword in keyword_dict){
                                    if (keyword == w){
                                            keyword_dict[w] += 1;
                                    }
                            }
                    }

                    items = '<thead><th>unique keywords</th><th>occurance</th><th>percent of text</th></thead>';
                    for (keyword in keyword_dict){
                            var occ = keyword_dict[keyword]*100/nwords;
                            var c=''
                            items += '<tr class="'+c+'"><td>'+keyword+'</td><td>'+keyword_dict[keyword]+'</td><td>'+occ.toPrecision(2)+'</td></tr>';
                        }
                    console.log(keyword_dict);
                    $('#result').append('<table>'+items+'<table>');
                    $('#result table').dataTable();
            });
     });
</script>

Вот HTML:

<form>
    <label>Article:</label><br>
    <textarea rows="25" cols="100" id="searchtext"></textarea><br>
    <input class="btn btn-success" id="go" type="submit" value="Submit"></input>
</form>

<div id="result">
</div>
Теги:
datatables
jquery-plugins

2 ответа

1
Лучший ответ

Вот функция, которая делает это:

function cleanUpText(text) {
    //add more words separated by | here
    var commonWords=/and|or|for|the|but|etc|/g; 

    //remove the common words
    text=text.replace(commonWords, '');

    //remove numbers
    text=text.replace(/\d/g, '');

    //remove consecutive whitespaces
    text=text.replace(/\s{2,}/g, ' ');

    return text;
}

Контрольная работа:

var text='javascript 123 5656 787878 for the but and or function 56 the to and or remove 56 90009090 not 2121 needed or and content ';

console.log(cleanUpText(text));

Выходы:

Функция javascript для удаления не требуемого содержимого

  • 0
    Привет @ davidkonrad Я попытался добавить это в свой скрипт, но, похоже, он не работает. Где я должен положить его и есть ли какие-то конкретные изменения, которые я должен внести в него? Я попытался заменить слово «текст» и ключевым словом, и результатом, но ни тот, ни другой не помогли.
  • 0
    Просто поместите вышеуказанную функцию в раздел <script> и вызывайте эту функцию каждый раз, когда вам нужно очистить вывод из <textarea> . Ваш код мне не очень понятен, но предположением будет var text = cleanUpText($('#searchtext').val()); как самая первая строка в submit -event - но на самом деле не могу сказать. Я просто ответил на вопрос технически.
0

функция jQuery inArray возвращает индекс элемента, а если не возвращает fount -1:

var commonWords = ['and','or','the'];
if($.inArray( keyword.toLowerCase(), commonWords)==-1){  
     // it not one of common words
}
else{
     // it is one of common words
}

Изменение: я добавил toLowerCase, предполагая, что вы хотите игнорировать чувствительность к регистру слов.

  • 0
    Этот пример решил вашу проблему?
  • 0
    Привет @Ashkan, который, кажется, не работает :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню