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

Java 我应该使用一系列if语句来检查IndexOutOfBounds错误吗?,java,string,Java,String,基本上,我有一系列字符串操作,每个操作都可能以IndexOutOfBoundsException结束 我现在最好的选择似乎是在每次操作之前使用if语句检查参数。我可以试着抓住整个街区,但看起来很乱 给定一个输入字符串,例如:“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(); in

基本上,我有一系列字符串操作,每个操作都可能以IndexOutOfBoundsException结束

我现在最好的选择似乎是在每次操作之前使用if语句检查参数。我可以试着抓住整个街区,但看起来很乱

给定一个输入字符串,例如:
“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;
URL a=新的URL(URL);
字符串b=a.getPath();
int c=b.indexOf(“num/”)
如果(c==-1){
返回null;
}
如果(b.长度()
有这么多单独的if语句是混乱的,但是有更好的解决方案来解释潜在的indexootfoundsceptions吗?


[请忽略nit样式,例如变量名]

我建议改用正则表达式:

String b = new URL(url).getPath();
Matcher m = Pattern.compile("num/(.*?/.*?)/").matcher(b);
if (m.find()) {
    return m.group(1);
} else {
    return null;
}

不希望使用正则表达式-用于编码准则哪种准则不允许使用正则表达式?我们正在处理的约束条件是什么?过度使用regex,太复杂的regex可能会对可维护性产生负面影响,但这是一个非常简单的情况,按政策排除regex在这里是,依我看,糟糕的政策。