为什么我总是让字符串超出范围?

发布于 2024-12-09 08:59:15 字数 167 浏览 0 评论 0原文

return nameString.substring(nameString.indexOf(" ", 0), nameString.lastIndexOf(" ", 0));

为什么总是返回错误?我只想将字符串从第一个出现的空格字符返回到字符串中最后一个出现的空格?

return nameString.substring(nameString.indexOf(" ", 0), nameString.lastIndexOf(" ", 0));

Why is it keep returning an error? I just want to return the string from the first occurring space character, to the last occurring space in the string?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

℡Ms空城旧梦 2024-12-16 08:59:15

lastIndexOf

public int lastIndexOf(String str,
                       来自索引的整数)

返回此字符串中指定子字符串最后一次出现的索引,从指定索引开始向后搜索...如果不存在这样的值,则返回 -1。

去掉indexOf 和lastIndexOf 的, 0 参数。当您将 0 的 fromIndex 传递给 lastIndexOf 时,它会从字符串的开头向后搜索以查找匹配项。当它找不到时,它返回 -1,这是子字符串的无效参数。

return nameString.substring(nameString.indexOf(" "), nameString.lastIndexOf(" "));

lastIndexOf

public int lastIndexOf(String str,
                       int fromIndex)

Returns the index within this string of the last occurrence of the specified substring, searching backward starting at the specified index... If no such value exists, then -1 is returned.

Get rid of the , 0 parameters to indexOf and lastIndexOf. When you pass a fromIndex of 0 to lastIndexOf it searches backwards from the start of the string to find a match. When it doesn't find one it returns -1 which is an invalid argument to substring.

return nameString.substring(nameString.indexOf(" "), nameString.lastIndexOf(" "));
你是年少的欢喜 2024-12-16 08:59:15

让我们把你的问题分成几部分

String nameString = "Your name is Matt";

indexOf: 它从左到右开始阅读当找到第一个匹配的字符时停止,并返回字符的位置

 nameString.indexOf("M", 0) /* returns 13 */
 nameString.indexOf(" ", 0) /* returns 4 (it's placed at 4'th position in the given sentence) */

lastIndexOf : 它开始从右向左读取,当字符匹配时停止并返回匹配字符的位置

nameString.lastIndexOf("t", 17)  /* returns 16 */
nameString.lastIndexOf(" ", 17)  /* returns 12 */
nameString.lastIndexOf(" ", 0)  /* returns -1, 

警告:您错误地给出了位置 0,它从右向左读取并发现没有匹配的内容,因此返回 -1) */

Let's break your question in parts

String nameString = "Your name is Matt";

indexOf : it start reading from left to right & stop when first matched char found, and returns the position of char

 nameString.indexOf("M", 0) /* returns 13 */
 nameString.indexOf(" ", 0) /* returns 4 (it's placed at 4'th position in the given sentence) */

lastIndexOf : it start reading from right to left and stop when char matched and returns the position of matched char

nameString.lastIndexOf("t", 17)  /* returns 16 */
nameString.lastIndexOf(" ", 17)  /* returns 12 */
nameString.lastIndexOf(" ", 0)  /* returns -1, 

Caution : you are making mistake to giving the position 0, it reads from right to left and found nothing matched so returns -1) */

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文