我有一个字符串"/p4products/nemis2/filehandlerU/encdv2/work/10098325"这是来自CMD的输入。在这个字符串中,"encdv"是环境名和"2"为实例ID。环境名可以是"encdv1","encdv2","encpr1","encpr2"但是实例ID可以是"1"或"2";只有。当我遇到这个字符串时,我想提取实例ID。
我想使用indexOf,然后最后charAt来获取值,这是正常工作的。但是有没有比这更方便的方法,因为如果字符串将来被更改,这种方法似乎有缺陷。
My Code Snippet:
public static void main(String[] args) {
String s = "/p4products/nemis2/filehandlerU/encdv2/work/10098325";
int instId = s.indexOf("enc");
int instIdVerify = s.indexOf("/work");
if (instId + 5 == instIdVerify -1)
System.out.println(s.charAt(instId + 5));
}
我们可以使用String#replaceAll
作为一个单行的解决方案:
String input = "/p4products/nemis2/filehandlerU/encdv2/work/10098325";
String envNum = input.replaceAll(".*/enc(?:dv|pr)(\d+)/.*", "$1");
System.out.println(envNum); // 2