3

Javascriptで最長の単語を見つける方法はありますか?句読点も無視する必要があります。

ロジックは理解しましたが、コードは...ため息をつきました

これが私たちの仕事です-

  1. スペースや記号で区切られていない、一緒になっている英数字の数を数えます。

  2. それらの長さを取得します。

  3. 全部で最大の長さを見つけてください。
  4. 最大の長さの単語を返します。

私が自分自身を明確にしていることを願っています...

4

5 に答える 5

9

文字列を分割し、パーツをループして、最長のものを追跡します。

このようなもの:

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

于 2012-08-31T13:52:36.350 に答える
8
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がその配列の中で最も長い単語になります。

于 2012-08-31T13:54:56.430 に答える
4

これを試して:

sentence_array = sentence.split(' ');
var longest = sentence_array.sort(function (a, b) { return b.length - a.length; })[0];
于 2012-08-31T13:56:48.790 に答える
2

このメソッドを使用して、文字列を単語の配列のみ(区切り文字、数字などなし)に分割し、match各要素の長さの降順で並べ替えることができます。その後、要素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;} );
}

ここでフィドル

于 2012-08-31T14:10:24.593 に答える
0

これが私が問題を解決しようとした方法です:

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; 

}
于 2015-11-03T17:19:57.023 に答える