我需要为文本字符串自动生成标签。在这种情况下,我会用这个字符串:使用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