首页 > 解决方案 > 关于为什么 lastIndexOf() 在这种情况下返回 -1 的非常简单的问题

问题描述

我有这段字符串,我想在其中获取“n”的最后一个索引,而不是返回 200+ 或返回 -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"))

标签: javascriptlastindexof

解决方案


字符串中的所有字符都不是文字n字符 - 相反,您正在使用\n,这是换行符的转义序列,例如

const str = `
`;

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

const str = '\n';

如果您希望字符串由文字反斜杠和文字ns 组成,请使用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"))


推荐阅读