2

我正在尝试遍历一个字符串变量并将每个字符保存在另一个变量中。我的代码如下所示:

    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);

这对我来说看起来很合乎逻辑,但它只打印第一个字母。我以为它会打招呼。有什么问题?没有正则表达式就不能完成吗?

4

3 回答 3

1

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

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()方法返回调用 String 对象中指定值的最后一次出现的索引,从 fromIndex 向后搜索。如果未找到该值,则返回 -1。

它不是最后一个字符的索引。

于 2017-08-29T20:27:58.240 回答
1

您需要长度和起始位置来检查索引。

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);

于 2017-08-29T20:33:50.317 回答
0

字符串内的 for 循环以连接变量中的字符(没有 RegExp)

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);
}
于 2017-08-29T20:36:41.793 回答