У меня есть таблица, которая создается из любого текста, вставленного в текстовое поле, с помощью плагина 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>
Вот функция, которая делает это:
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 для удаления не требуемого содержимого
функция 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, предполагая, что вы хотите игнорировать чувствительность к регистру слов.
<script>
и вызывайте эту функцию каждый раз, когда вам нужно очистить вывод из<textarea>
. Ваш код мне не очень понятен, но предположением будетvar text = cleanUpText($('#searchtext').val());
как самая первая строка вsubmit
-event - но на самом деле не могу сказать. Я просто ответил на вопрос технически.