关于为什么在这种情况下 lastIndexOf() returns -1 的非常简单的问题

really simple question about why lastIndexOf() returns -1 in this case

我有这段字符串,我想在其中获取“n”的最后一个索引,而不是返回 200+ 或 returns -1。我没有找到它。这是为什么?

s="2\n8\n6\n2\n12\n3\n4\n11\n1\n1\n11\n9\n1\n14\n8\n9\n2\n5\n5\n12\n6\n0\n10\n0\n0\n6\n6\n8\n0\n11\n14\n12\n12\n9\n13\n12\n0\n4\n14\n5\n11\n10\n14\n1\n6\n6\n5\n0\n4\n3\n8\n8\n12\n13\n4\n7\n2\n7\n1\n2\n9\n4\n5\n11\n12\n11\n11\n8\n11\n5\n6\n12\n13\n7\n11\n10\n10\n12\n11\n13\n14\n11\n3\n10\n3\n8\n7\n14\n12\n14\n8\n7\n14\n11\n8\n14\n10\n6\n12\n7"
console.log(s.lastIndexOf("n"))

None 字符串中的字符是文字​​ n 字符 - 相反,您使用的是 \n,这是换行符的转义序列,例如

const str = `
`;

是由换行符组成的字符串,相当于

const str = '\n';

如果您希望您的字符串由文字反斜杠和文字 n 组成,请使用 String.raw 禁用转义序列。

const s = String.raw`2\n8\n6\n2\n12\n3\n4\n11\n1\n1\n11\n9\n1\n14\n8\n9\n2\n5\n5\n12\n6\n0\n10\n0\n0\n6\n6\n8\n0\n11\n14\n12\n12\n9\n13\n12\n0\n4\n14\n5\n11\n10\n14\n1\n6\n6\n5\n0\n4\n3\n8\n8\n12\n13\n4\n7\n2\n7\n1\n2\n9\n4\n5\n11\n12\n11\n11\n8\n11\n5\n6\n12\n13\n7\n11\n10\n10\n12\n11\n13\n14\n11\n3\n10\n3\n8\n7\n14\n12\n14\n8\n7\n14\n11\n8\n14\n10\n6\n12\n7`;
console.log(s.lastIndexOf('n'))

如果你想让字符串由换行符组成,并且你想检查换行符的最后一个索引,将换行符传递给lastIndexOf

s="2\n8\n6\n2\n12\n3\n4\n11\n1\n1\n11\n9\n1\n14\n8\n9\n2\n5\n5\n12\n6\n0\n10\n0\n0\n6\n6\n8\n0\n11\n14\n12\n12\n9\n13\n12\n0\n4\n14\n5\n11\n10\n14\n1\n6\n6\n5\n0\n4\n3\n8\n8\n12\n13\n4\n7\n2\n7\n1\n2\n9\n4\n5\n11\n12\n11\n11\n8\n11\n5\n6\n12\n13\n7\n11\n10\n10\n12\n11\n13\n14\n11\n3\n10\n3\n8\n7\n14\n12\n14\n8\n7\n14\n11\n8\n14\n10\n6\n12\n7"
console.log(s.lastIndexOf("\n"))