我正在写一个应用程序,它可以根据节间的换行次数将歌词格式化成Google幻灯片。为了保持逻辑简单,我一直在测试同一组歌词,找到单词'foo‘的索引,并使用该索引创建一个子字符串以推入数组。此数组将用于在另一个函数中制作幻灯片。
当我尝试使用单词的索引执行lyrics.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;
}我希望日志的输出是“原始歌词之类的”,索引号,然后是“之类的”或任何子串输出。相反,我得到“原创歌词废话”,索引号,然后是“原创歌词废话”。
发布于 2019-07-22 07:28:30
针对您的情况的特定答案在于if语句中用于相等性检查的单个=。它实际上将lengthOfChunk的值设置为-1,这意味着它接受一个返回完整字符串的lyrics.substr(0)。
但是,听起来您可以使用lyrics.split("[your word]"),而不必手动填充数组并移动到while循环中的下一个字符串。如果我没看错,你可以这样做:
splitLyrics = lyrics.split("foo");这将得到一个不包括关键字的所有字符串数组。
https://stackoverflow.com/questions/57137605
复制相似问题