2014-01-15 39 views
2

任何人都可以幫我解決這個問題。它似乎沒有正常工作。它應該找到輸入到其中的任何字符串的最長單詞。當我運行它時,它返回字符串的第一個字符。句子代碼中最長的單詞不起作用

function LongestWord(sen) { 

    var lrg = ''; 

    sen.split(" ");//seperates sen into words 

    for(var i = 0;i<sen.length;i++){ 
    var check1 = sen[i];//assigns check1 as word in sen 
    if(check1.length>lrg.length){//assigns length of longest word 
     lrg = check1; 

     } 

    } 
     return lrg; 

} 

// keep this function call here 
// to see how to enter arguments in JavaScript scroll down 
LongestWord(readline()); 
+5

'split'不改變原始字符串。 – elclanrs

回答

4

split方法返回一個新的數組。試試這個:

var arr = sen.split(" "); 
for(var i = 0; i < arr.length; i++) { 
    var check1 = arr[i]; 
    if(check1.length>lrg.length) { 
     lrg = check1; 
    } 
} 

return lrg; 
0

您還可以使用正則表達式來檢查字符串是否匹配。

var sentence = "seperates sen into words"; 
var splittedParts = sentence.match(/\w{1,}/gi);//You can also make use of regular //expression 
for(var i = 0; i < splittedParts.length; i++) { 
    var check1 = splittedParts[i]; 
    if(check1.length>=splittedParts.length) { 
     splittedParts = check1; 
    } 
} 
    alert(splittedParts); 
0

如果匹配的話和排序長度,最長的第一,

數組中的第一個字是最長的。

function longestWord(str){ 
    return str.match(/[a-zA-Z]+/g).sort(function(a, b){ 
     if(a.length=== b.length) return a<b? 1: a>b? -1: 0; 
     return b.length-a.length; 
    })[0]; 
} 
var s1= 'It\'s more like it is today, than it ever was before.'; 


longestWord(s1) 

/*返回的值:(字符串):前*/

可以與返回相同長度的陣列,過濾器 -

function longestWords(str){ 
    return str.match(/[a-zA-Z]+/g).sort(function(a, b){ 
     if(a.length=== b.length) return a<b? 1: a>b? -1: 0; 
     return b.length-a.length; 
    }).filter(function(w, i, A){ 
     return w.length=== A[0].length; 
    }); 
} 

var s1= 'It became more like it is today, than it ever did before.'; 
longestWords(s1) 

/*返回的值:(陣列) :之前,變成*/