查找字符串中第一个最长的单词,不包括符号
Find first longest word in a string, excluding symbols
function longestWord(string) {
var str = string.split(" ");
var longest = 0;
var word = null;
for (var i = 0; i < str.length; i++) {
var checkedLetters = "";
for (var j = 0; j < str[j].length; j++) {
if (j == /[^a-zA-Z]/) {
checkedLetters += j;
}
if (longest < checkedLetters.length) {
longest = checkedLetters.length;
word = checkedLetters;
}
}
}
return word;
}
我使用正则表达式有什么问题吗?当我调用longestWord("Hello,我在这里"(时,我希望它返回"Hello"(不带逗号(,但它返回null。
刚刚写了这个小片段,可能会帮助你:
function longestWord(string){
return string.match(/[a-zA-Z]+/g)
.reduce(function(a,b){
return a.length>=b.length?a:b;
})
}
/[a-zA-Z]+/g
匹配字符串中的所有单词,并返回它们的数组。上面的测试字符串("Hello, I am here"
(将变为["Hello","I","am","here"]
当这个正则表达式运行时。
一旦我有了这个数组,只需循环遍历它以找到最长的单词即可。我通过使用.reduce
你的代码中有一些错误:
for (var j = 0; j < str[j].length; j++) {
应该是
for (var j = 0; j < str[i].length; j++) {
和
if (j == /[^a-zA-Z]/) {
应该是:
if (/[a-zA-Z]/.test(str[i][j])) {
您的最终代码应该是:
function longestWord(string) {
var str = string.split(" ");
var longest = 0;
var word = null;
for (var i = 0; i < str.length; i++) {
var checkedLetters = "";
for (var j = 0; j < str[i].length; j++) {
if (/[a-zA-Z]/.test(str[i][j])) {
checkedLetters += str[i][j];
}
}
if (longest < checkedLetters.length) {
longest = checkedLetters.length;
word = checkedLetters;
}
}
return word;
}
查看演示
使用正则表达式的方式的最大(非拼写错误(问题是该方法.test
; ==
将测试字符串是否等于正则表达式的字符串表示形式。
只需使用.match
和一点点sort
魔法!
function longestWord(string){
var words = string.match(/'w+/g);
words.sort(function(a, b) { return b.length - a.length; });
// Firefox 22.0 promotion:
// words.sort((a, b) => a.length - b.length);
return words[0];
}
你不需要
使用正则表达式,你可以使用 .length 来搜索最长的字符串。
即
function longestWord(string) {
var str = string.replace(/['.,-'/#!$%'^&'*;:{}='-_`~()]/g,"").split(" ");
longest = str[0].length;
longestWord = str[0];
for (var i = 1; i < str.length; i++) {
if (longest < str[i].length) {
longest = str[i].length;
longestWord= str[i];
}
}
return longestWord;
}
编辑:你必须使用一些正则表达式...
相关文章:
- 如何将页面上的所有电话号码更改为可点击链接,不包括特定类别的元素
- Regex:匹配以“AM”结尾的单词(不区分大小写比较)
- 将正则表达式重新分解为不包括空组
- 为什么从JSON文本到类型的转换不包括函数
- XMLHttpRequest调用不包括If Modified Since标头
- 使用 JavaScript 执行一行 PHP(不包括 PHP 文件)
- 捆绑器不包括 .min 文件
- 与冒号(不包括冒号)之间的正则表达式单词匹配
- 包含特殊字符 (!,@,#,&) 不包括其他特殊字符
- Javascript RegEx:如何获取单引号之间的名称(不包括单引号)
- Javascript RegEx匹配URL's,但不包括图像
- Rails不包括用于javascript的require_tree
- 确保填充网格时单词不会重复
- 获取JS中特定路径的cookie,不包括根路径
- 正则表达式计算不包括 html 标记的单词
- Javascript正则表达式,不包括单词
- 查找字符串中第一个最长的单词,不包括符号
- Regex将所有单词换行到span中,不包括img元素
- JavaScript RegEx不包括某些单词/短语
- 选择单词边界,但不包括标点符号