Javascript 是否返回整个字符串?
我正在编写一个应用程序,它可以根据诗节之间的换行次数将歌词格式化成谷歌幻灯片。为了保持逻辑简单,我一直在测试同一组歌词,找到单词“foo”的索引,并使用该索引创建一个子字符串以推入数组。此数组将用于在另一个函数中制作幻灯片 当我尝试使用单词的索引to do lyris.substr(0,index)时,它返回整个字符串,即使带有有效的索引号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 =
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>。这并不是我们的初衷。将其切换到=
以查找存储值本身的相等性。