java中按数字拆分数组
我想从数字的起始位置分离一个字符串java中按数字拆分数组,java,regex,string,Java,Regex,String,我想从数字的起始位置分离一个字符串 String uri = "/api/content/9011"; String[] splitUri = uri.split("[0-9]"); System.out.println(splitUri[0]); System.out.println(splitUri[1]); 当我运行此代码时,它会显示ArrayIndexOutOfBoundsException,有人能告诉我为什么吗?我想存储在第0个索引=/api/content/ 第一个指数=9011。
String uri = "/api/content/9011";
String[] splitUri = uri.split("[0-9]");
System.out.println(splitUri[0]);
System.out.println(splitUri[1]);
当我运行此代码时,它会显示ArrayIndexOutOfBoundsException
,有人能告诉我为什么吗?我想存储在第0个索引=/api/content/
第一个指数=9011。我甚至想要第一个数字。我该怎么办???像这样做:
String line = "/api/content/9011";
Pattern pattern = Pattern.compile("(/api/content/)([0-9]*)");
Matcher matcher = pattern.matcher(line);
while(matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
记住导入java.util.regex.*代码>
如果确实需要使用
split()
执行此操作:
stringuri=“/api/content/9011”;
String[]splitUri=uri.split((?ArrayIndexOutOfBoundsException
发生,因为从split方法返回的array
只有一个条目。通过正则表达式,您正在“擦除”数字。
Split创建一个数组
,但如果后面没有条目,则不会添加空条目。只需使用字符串uri=“/api/content/9011a”
进行调试,您将得到一个长度为5的数组:
/api/内容/
“”
“”
“”
a
因此,作为正则表达式,您应该使用”(?这应该适合您
String uri = "/api/content/9011";
String[] splitUri = uri.split("/");
System.out.println(splitUri[0]); // ""
System.out.println(splitUri[1]); // api
System.out.println(splitUri[2]); // content
System.out.println(splitUri[3]); // 9011
如果您的字符串是“/api/content/9011/aaa/55/vvv”
输出应该是什么样子呢?字符串将是/api/content/{id}因此,数字应该与字符串@YCF_分离,并读取拆分方法的JavaDoc:。拆分方法围绕匹配的正则表达式进行拆分。因此,正则表达式将不会成为拆分数组的一部分。(a:b拆分者:返回a,b。不是a,:,b)无论如何,如果你的字符串总是以/api/content/{id}的形式出现,那么提取数字的最简单的方法就是:uri.substring(13)如果你的字符串总是以/api/content/{id}的形式出现,并且你想将“/api/content/”和“{id}”分开,你可以简单地执行字符串s1=uri.substring(0,uri.lastIndexOf(“/”)+1);字符串s2=uri.substring(uri.lastIndexOf(“/”)+1);
String uri = "/api/content/9011";
String[] splitUri = uri.split("/");
System.out.println(splitUri[0]); // ""
System.out.println(splitUri[1]); // api
System.out.println(splitUri[2]); // content
System.out.println(splitUri[3]); // 9011