我需要爲文本字符串自動生成標籤。在這種情況下,我會用這個字符串:使用javascript自動從字符串生成標籤
var text = 'This text talks about loyalty in the Royal Family with Príncipe Charles';
我目前的執行情況,生成是6+個字符長的話標籤,並能正常工作。
words = (text).replace(/[^a-zA-Z\s]/g,function(str){return '';});
words = words.match(/\w{6,}/g);
console.log(words);
這將返回:
["loyalty","Family","Prince","Charles"]
的問題是,有時,標籤應該是一組特定的單詞。我需要的結果是:
["loyalty","Royal Family","Príncipe Charles"]
這意味着,替換/匹配代碼應該測試:
- 詞語是6個字符長(或更多);和/或
- 如果一組單詞以大寫字母開頭,那麼這些單詞應該在同一個數組元素中連接在一起。不要緊,如果一些單詞少於6個字符長 - 但至少其中一個必須是6+,例如:「停在英國倫敦的Guardián」應該返回[「The UKGuardián」,「倫敦「]
我明顯在第二個要求中遇到了麻煩。有任何想法嗎?謝謝!
這似乎工作,但它也會匹配「我很酷」,這不匹配,因爲沒有任何字符> = 6個字符。 – 2012-07-12 14:15:52
+1,這個更新很好。這似乎工作正如OP要:-) – 2012-07-12 14:19:09
偉大的解決方案!只是一件重要的事情,解決方案應該考慮特殊字符。例如,「PrincéHermione」正在返回[「Hermione」];和「superhábilmente」正在返回[「superh」,「bilmente」] – andufo 2012-07-12 14:29:09