基本上,我有一系列的String操作,每个操作都可能以IndexOutOfBoundsException结束。
我现在最好的选择似乎是在每次操作之前使用if语句来检查参数。我可以尝试使用try-catch围绕整个街区,但它似乎很乱。
给定输入字符串,例如:"http://website.web.com/num/123.3/1-2-3.1/something/"
,我希望输出为:123.3/1-2-3.1
(数字后的数字)
现在代码:
URL a = new URL(url);
String b = a.getPath();
int c = b.indexOf("num/")
if (c == -1) {
return null;
}
if (b.length() < c + 4) {
return null;
}
String d = b.substring(c + 4);
if (d.indexOf("/") == -1) {
return null;
}
int e = d.indexOf("/", d.indexOf("/") + 1)
if (e == -1) {
return None
}
String f = d.substring(0, e)
return f;
有这么多单独的if语句是混乱的,但有没有更好的解决方案来考虑潜在的IndexOutOfBoundsExceptions?
[请忽略变量名称等样式]
答案 0 :(得分:1)
我建议改用Regex:
String b = new URL(url).getPath();
Matcher m = Pattern.compile("num/(.*?/.*?)/").matcher(b);
if (m.find()) {
return m.group(1);
} else {
return null;
}