2017-08-29 26 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); 
} 
相关问题