我有这个示例字符串:
var string = 'This is a süPer NICE Sentence, am I right?';
结果必须是:
this, is, süper, nice, sentence
要求:
这是我当前的脚本:(您可以在jsfiddle)
中测试它var string = 'This is a süPer NICE Sentence, am I right?';
var words;
words = string.replace(/[^a-zA-Z\s]/g,function(str){return '';});
words = words.match(/\w{2,}/g);
if(words != null) {
//5 words maximum
words = words.slice(0,5);
if(words.length) {
console.log(words.join(', ')); //should print: this, is, süper, nice, sentence
}
}
在join
之前将匹配的单词转换为小写的最佳方法是什么?
答案 0 :(得分:1)
答案肯定是toLowerCase()
,但我认为运行它的最佳位置是在最后而不是开头(操作的项目较少):
if(words != null) {
//5 words maximum
words = words.slice(0,5);
if(words.length) {
console.log(words.join(', ').toLowerCase()); //here
}
}
据我所知,toLowerCase()是unicode友好的。你的正则表达式正在剥离任何不是a-z,A-Z的东西。
Asker发现此链接有助于解决正则表达式问题:Regular expression to match non-English characters?
答案 1 :(得分:1)
只需使用.toLowerCase()。
var string = 'This is a süPer NICE Sentence, am I right?';
string = string.toLowerCase();
var words = string.split(' ');
//5 words maximum
words = words.slice(0,5);
console.log(words.join(', ')); //should print: this, is, super, nice, sentence
特殊字符被正则表达式过滤掉 - 如果你知道单词是用空格分隔的,只需使用string.split('');
答案 2 :(得分:0)
从开头
小写字符串string.toLowerCase().replace(...
答案 3 :(得分:0)
或者,您可以使用Array#map将单词数组映射到小写字符串。
console.log(words.map(function(word) { return word.toLowerCase(); }).join(', '));
答案 4 :(得分:0)
您可以使用toLowerCase
的{{1}}方法首先将字符串转换为小写字母,然后对字符串执行您需要执行的所有操作。
例如:string