2017-08-29 29 views
2

我想通過字符串變量循環並保存每個字符在其他變量。我的代碼如下所示:For循環內的字符串連接變量中的字符(不包括RegExp) - Javascript

var str = "hello world"; 
    var res = ""; 

    for (var i = str.indexOf("hello"); i <= str.lastIndexOf("hello"); i++) { 
     res = res.concat(str.charAt(i));  
    } 

    console.log("The result is: " + res); 

它看起來對我來說真的很符合邏輯,但只打印了個字母。我期待它打個招呼。有什麼問題?沒有正則表達式不能完成?

+3

'str.lastIndexOf( 「你好」)'沒有做什麼你認爲它的確如此。它不會告訴你'o'在哪裏...... – epascarello

+0

這個循環只執行一次 – OneMoreQuestion

回答

0

您需要檢查索引的長度和起始位置。

var str = "bla bla hello world", 
 
    res = "", 
 
    i, 
 
    l = "hello".length, 
 
    p = str.indexOf("hello"); 
 

 
for (i = p; i < p + l; i++) { 
 
    res += str[i]; 
 
} 
 

 
console.log("The result is: " + res);

1

pattern.length替換str.lastIndexOf("hello")

var str = "hello world"; 
var pattern = "hello"; 

var res = ""; 

var index = str.indexOf(pattern); 

for (var i = index; i <= index + pattern.length; i++) { 
    res = res.concat(str.charAt(i)); 
} 

console.log("The result is: " + res); 

從文檔:

lastIndexOf()方法返回指定值最後一次出現的調用字符串對象中的索引,搜索從fromIndex向後。如果未找到該值,則返回-1。

這不是最後一個字符的索引。

+0

請編輯你的答案,以便它可以工作,即使變量str等於例如「一些隨機文本hello world」。 –

+0

@JanLegner好點 –

0

對於字符串內循環來串聯字符變量(無正則表達式)

var theString = "This is my string"; 
var theArray = []; 
var theResultString = ""; 

doIt(theString); 
doitagain(theString) 
function doIt(incomingString) 
{ 
    //concatenate into an array object 
    for(var i = 0; i < incomingString.length; i++) 
    { 
     theArray.push(incomingString.substring(i, i+1)) 
    } 
    console.log(theArray); 
} 

function doitagain(incomingString) 
{ 
    //concatenating into a string object 
    for(var i = 0; i < incomingString.length; i++) 
    { 
    theResultString += incomingString.substring(i, i+1); 
    } 
    console.log(theResultString); 
} 
相關問題