2016-11-23 43 views
-1

我試圖從字符串中刪除所有非字母數字字符,然後繼續計算從pdf中提取的每一行的單詞數量。逗號未刪除Javascript正則表達式

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

這是代碼。所得到的輸出的一個示例:

計數:10個字:本,快速,棕色,福克斯,,,跳躍,在所述的,懶惰

雖然項[ 「STR」]看起來像這樣的:

敏捷的棕色狐狸 - 跳通過惰性

一些產量也類似於:

數: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你是對的! –