子不在此行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);
}
答
检查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.2
或2
或1
。目前您的功能将返回1.2
,这可能是正确的 - 但这取决于您的需求。
阅读子字符串的文档。如果你注意,你会看到你的误解。不要减去。阅读文档和使用代码进行实验要比在SO上提出要快。自问你已经16分钟了。这在调试器中可以很容易地修复一两分钟。每个问题都不适合在这里询问。 – duffymo
在你的例子中, 子字符串似乎是错误的方法。 考虑在'。'上使用拆分和拆分。 – DwB