我应该使用一系列if语句来检查IndexOutOfBounds错误吗?

时间:2018-02-02 00:55:48

标签: java string

基本上,我有一系列的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?

[请忽略变量名称等样式]

1 个答案:

答案 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;
}