2016-11-23 3 views
-1

Я пытаюсь удалить все не буквенно-цифровые символы из строки, а затем перейти к подсчету количества слов для каждой строки, извлеченной из pdf.Запятые не удалены Javascript regex

var m = item["str"].replace(/[^a-zA-Z0-9 ]/g," ").trim().split(" "); 
console.log("count: " + m.length + " words: " + m); 

Это код. Пример полученного выхода:

счета: слова 10:, Быстрый, коричневый, Fox ,,, прыжками, Over, The, Ленивый

В то время как пункт [ "ул"] выглядит это:

Быстрый Браун Фокс - прыгает через ленивую

Некоторые выхода также выглядит следующим образом:

Количество: 1 слов:

Может кто-нибудь помочь мне понять, что происходит здесь? Заранее спасибо!

ответ

0

Вы почти done.Just сделать одну вещь удалить пустые аргументы в массив с помощью метода Array#filter

var m = "The Quick Brown Fox - Jumps Over The Lazy".replace(/[^a-zA-Z0-9 ]/g," ").trim().split(" ").filter(a=> (a)); 
 
console.log("count: " + m.length + " words: " + m.join(","));

1

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

Позволяет использовать пример:

The Quick Brown Fox - Jumps Over The Lazy 

становится

The Quick Brown Fox Jumps Over The Lazy 

Расщепление что пробелами приведет несколько пустых строк.


Вы должны разделить на несколько пробелов подряд, чтобы удалить их: split(/\s+/).

function runReplace(str) { 
 
    var m = str.replace(/[^a-zA-Z0-9 ]/g," ").trim().split(/\s+/); 
 
    document.write(str + "<br/>"); 
 
    document.write("count: " + m.length + " words: " + m + "<br/>"); 
 
} 
 

 
runReplace("The Quick Brown Fox - Jumps Over The Lazy");

+0

'/ [^ A-Za-Z0-9] +/g' не работает и 'split (" \ s + ")' недопустимый синтаксис. – Cerbrus

1

var item = { 
 
    str: 'The Quick Brown Fox - Jumps Over The Lazy' 
 
}; 
 

 
var output = item['str'].trim().replace(/\W/g, ' ').replace(/\s+/g, ' ').split(/\s/); 
 

 
console.log('length', output.length); 
 
console.log('output', output)

Я нашел 8 слов вместо 10: v

+0

Я использовал бы '.replace (/ \ s +/g, '')' вместо '.replace (/ \ s {2}/g, '')'. Ваш код не работает должным образом для двойных пробелов. – Cerbrus

+0

@Cerbrus Вы правы! –

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