javascript - 关于为什么 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"))
解决方案
字符串中的所有字符都不是文字n
字符 - 相反,您正在使用\n
,这是换行符的转义序列,例如
const str = `
`;
是一个由换行符组成的字符串,相当于
const str = '\n';
如果您希望字符串由文字反斜杠和文字n
s 组成,请使用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"))
推荐阅读
- python - NotImplementedError:子类化 `Model` 类时,应实现 `call` 方法
- javascript - 将标签分隔为键:使用 React Native TextInput 为真
- javascript - GeolocationPositionError { code: 1, message: "User denied geolocation prompt" } - 在开发 Firefox 扩展时
- cuda - 如何暂停所有 CUDA 线程,直到线程 0 完成一些代码?
- amazon-web-services - 如何从桶中只获取一个对象?
- node.js - 我正在尝试在 macOS 上使用 npm 安装 bootstrap 5,但是当我使用 npm run dev 命令时,最后一步出现错误
- reactjs - useeffect() 在react 中运行return() 后运行并将数据设置为变量?如何处理?
- android - 同时运行多个定时器并保持定时器运行,即使用户已经关闭了android上的应用程序
- c - 如何使用指针算法为结构内的数组赋值?
- python - 如何在DataFrame中有条件地获取列的前n个值的列表?