Javascript 是否返回整个字符串?

Javascript 是否返回整个字符串?,javascript,google-apps-script,substr,Javascript,Google Apps Script,Substr,我正在编写一个应用程序,它可以根据诗节之间的换行次数将歌词格式化成谷歌幻灯片。为了保持逻辑简单,我一直在测试同一组歌词,找到单词“foo”的索引,并使用该索引创建一个子字符串以推入数组。此数组将用于在另一个函数中制作幻灯片 当我尝试使用单词的索引to do lyris.substr(0,index)时,它返回整个字符串,即使带有有效的索引号 function splitLyrics(lyrics) { var lyricsArray = []; var lengthOfChunk =

我正在编写一个应用程序,它可以根据诗节之间的换行次数将歌词格式化成谷歌幻灯片。为了保持逻辑简单,我一直在测试同一组歌词,找到单词“foo”的索引,并使用该索引创建一个子字符串以推入数组。此数组将用于在另一个函数中制作幻灯片

当我尝试使用单词的索引to do lyris.substr(0,index)时,它返回整个字符串,即使带有有效的索引号

function splitLyrics(lyrics) {
  var lyricsArray = []; 
  var lengthOfChunk = 0;
  var lengthOfSong = 0;
  var lyricsToPush;

  while (lyrics.length > 0) {
    Logger.log(lyrics);
    lengthOfSong = lyrics.length;
    lengthOfChunk = lyrics.indexOf('foo');
    Logger.log(lengthOfChunk);

    if (lengthOfChunk = -1) {
      lengthOfChunk = lengthOfSong;
    }

    lyricsToPush = lyrics.substr(0, lengthOfChunk);
    Logger.log(lyricsToPush);
    lyricsArray.push(lyricsToPush);

    lyrics = lyrics.substr(lengthOfChunk + 1);
  }

  return lyricsArray;
}

我希望日志的输出是“原始歌词”等等,索引号,然后是“等等”或任何子字符串输出。相反,我得到的是“原始歌词布拉布拉”,索引号,然后是“原始歌词布拉布拉”

对您的情况的具体回答是在if语句中用于平等性检查的单个
=
。它实际上是将
lengthOfChunk
的值设置为-1,这意味着它使用
lyris.substr(0)
返回完整字符串

但是,听起来您可以使用
歌词.split(“[您的单词]”)
,而不必手动填充数组并移动到while循环中的下一个字符串。如果我正确理解了问题,您可以:

splitLyrics = lyrics.split("foo");

这将得到一个不包括关键字的所有字符串的数组。

这里是否有
lengthOfChunk=lyris.indexOf('foo')?您正在查找第一个出现的
'foo'
。但是歌词有“废话”
。歌词只是一个例子。我使用了一个存在于我的巨大字符串中的单词,这个字符串包含歌词。实际上,更优雅的是这个答案:谢谢!仍然有点好奇为什么子字符串不能正确返回,但这肯定是解决我的问题的一个更好的解决方案,我不知道。
lengthOfChunk
的索引值是多少?有一个问题是
=
用于
lengthOfChunk=-1
的相等性检查的单个
=/code>。这并不是我们的初衷。将其切换到
=
以查找存储值本身的相等性。