簡體   English   中英

找出句子中最長的單詞 - Javascript

[英]Find out the longest word from a sentence - Javascript

有沒有辦法找出Javascript中最長的單詞? 它也應該忽略標點符號!

我理解邏輯,但代碼...... 嘆息

這就是我們的工作 -

  1. 計算一起使用的字母數字字符數,不用空格或任何符號分隔。

  2. 得到他們的長度。

  3. 找到最大的長度。
  4. 返回最長的單詞。

希望我能讓自己明白......

拆分字符串,循環部分並跟蹤最長的部分。

像這樣的東西:

var parts = sentence.split();
var longestIndex = -1;
var longestWord = 0;

for(var i=0; i < parts.length; i++){
    if(parts[i].length > longestWord){
        longestWord = parts[i].length;
        longestIndex = i;
    }
}

alert("longest word is " + parts[longestIndex] + ": " + longestWord + " characters");

如果您需要拆分非字母字符和空格,則需要使用正則表達式。 你可以改變這一行:

var parts = sentence.split();

對此(感謝Kooilnc的正則表達式):

var parts = sentence.match(/\w[a-z]{0,}/gi);

工作jsfiddle

var longest_word = arr.reduce(function (x, y) { return x.length > y.length ? x : y; });

你去吧

使用它:

var arr = [ 'lol', 'loll', 'lollll', 'lo', 'l' ];
var longest_word = arr.reduce(function (x, y) { return x.length > y.length ? x : y; });

因此,將您的句子轉換為數組,然后變量longest_word將是該數組中最長的單詞。

嘗試這個:

sentence_array = sentence.split(' ');
var longest = sentence_array.sort(function (a, b) { return b.length - a.length; })[0];

您可以使用match方法將字符串拆分為單詞數組(沒有sepators,數字等),並按每個元素的長度降序排序,之后元素0是最長的單詞。

它可以是String.prototype擴展名

String.prototype.longestWord = function(){
  return (this.match(/\w[a-z]{0,}/gi) || [''])
          .sort(function(a,b){return b.length-a.length;})[0];
}
//usage
'We saw it ...! A lazy cat walking - or did we?'.longestWord(); //=> walking
'------------'.longestWord();                                   //=> ''
'---aa--b----'.longestWord();                                   //=> 'aa'

與函數相同,使用Array.reduce

function longestWord(str){
   return (str.match(/\w[a-z]{0,}/gi) || [''])
           .reduce( function(a,b){return a.length>b.length ? a : b;} );
}

在這里小提琴

這就是我試圖解決問題的方法:

function LongestWord(sen) { 
    var wordArray = sen.match(/\w+/gi);
    var longest = 0; 
    var word = undefined; 
  for(var i = 0; i < wordArray.length; i++){
    if(wordArray[i].length > longest){
       word = wordArray[i];
      longest = word.length;
    }
  }

  return word; 

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM