子不在此行lastDot越来越问题工作

问题描述:

This is my previous question子不在此行<code>lastDot</code>越来越问题工作

在我上面的问题的回答return id.substring(0, lastDot - 1);

如果我有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); 
} 
+1

阅读子字符串的文档。如果你注意,你会看到你的误解。不要减去。阅读文档和使用代码进行实验要比在SO上提出要快。自问你已经16分钟了。这在调试器中可以很容易地修复一两分钟。每个问题都不适合在这里询问。 – duffymo

+0

在你的例子中, 子字符串似乎是错误的方法。 考虑在'。'上使用拆分和拆分。 – DwB

检查Java文档:https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

第二个参数是从第一个参数开始的字符串的长度,所以如果你总是与指数0开始,你并不需要减去1

return id.substring(0, lastDot); 

一个更普遍的做法是始终减去第一个参数

int offset = 0; 
return id.substring(offset, lastDot-offset); 

return id.substring(0, lastDot); 

是你的意思。但想想你的身份证是1.2.3这种情况下返回的情况是什么? 1.221。目前您的功能将返回1.2,这可能是正确的 - 但这取决于您的需求。