Java 子字符串不工作

Java 子字符串不工作,java,string,Java,String,在我上面问题的答案中,返回id.substring(0,lastDot-1)在这一行lastDot出现问题 如果id为1.1,则上行的lastDot值为1子字符串将获得“” 我怎样才能避免这个问题 private String getParentId(String id) { int lastDot = id.lastIndexOf("."); if (lastDot == -1) { return null; } return id.substr

在我上面问题的答案
中,返回id.substring(0,lastDot-1)在这一行
lastDot
出现问题

如果id为1.1,则上行的
lastDot
值为
1
子字符串将获得
“”

我怎样才能避免这个问题

private String getParentId(String id) {
    int lastDot = id.lastIndexOf(".");
    if (lastDot == -1) {
        return null;
    }
    return id.substring(0, lastDot - 1);
}
查看java文档:

第二个参数是从第一个参数开始的字符串长度,因此如果总是从索引0开始,则不需要减去1

return id.substring(0, lastDot);
更一般的方法是总是减去第一个参数

  int offset = 0;
return id.substring(offset, lastDot-offset);
查看java文档:

第二个参数是从第一个参数开始的字符串长度,因此如果总是从索引0开始,则不需要减去1

return id.substring(0, lastDot);
更一般的方法是总是减去第一个参数

  int offset = 0;
return id.substring(offset, lastDot-offset);
可能就是你的意思。但是想想你的id是
1.2.3
在这种情况下你想返回什么<代码>1.2
2
1
。此时,您的函数将返回
1.2
,它可能是正确的,但这取决于您的需要


可能就是你的意思。但是想想你的id是
1.2.3
在这种情况下你想返回什么<代码>1.2或
2
1
。此时,您的函数将返回
1.2
,它可能是正确的-但这取决于您的需要。

阅读文档中的子字符串。如果你注意,你会看到你的误解。不要减法。阅读文档和实验代码要比提问更快。你已经问了16分钟了。在调试器中用一两分钟就可以很容易地解决这个问题。这里并不是每个问题都适合提问。在您的示例中,子字符串似乎是错误的方法。考虑使用“拆分和拆分”。“读取子字符串的文档”。如果你注意,你会看到你的误解。不要减法。阅读文档和实验代码要比提问更快。你已经问了16分钟了。在调试器中用一两分钟就可以很容易地解决这个问题。这里并不是每个问题都适合提问。在您的示例中,子字符串似乎是错误的方法。考虑使用“拆分”和“拆分”。