首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >String.substr()是否返回整个字符串?

String.substr()是否返回整个字符串?
EN

Stack Overflow用户
提问于 2019-07-22 07:03:50
回答 1查看 283关注 0票数 0

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

当我尝试使用单词的索引执行lyrics.substr(0,index)时,它返回整个字符串,即使包含有效的索引号也是如此。

代码语言:javascript
运行
复制
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;
}

我希望日志的输出是“原始歌词之类的”,索引号,然后是“之类的”或任何子串输出。相反,我得到“原创歌词废话”,索引号,然后是“原创歌词废话”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 07:28:30

针对您的情况的特定答案在于if语句中用于相等性检查的单个=。它实际上将lengthOfChunk的值设置为-1,这意味着它接受一个返回完整字符串的lyrics.substr(0)

但是,听起来您可以使用lyrics.split("[your word]"),而不必手动填充数组并移动到while循环中的下一个字符串。如果我没看错,你可以这样做:

代码语言:javascript
运行
复制
splitLyrics = lyrics.split("foo");

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57137605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档