Java '之间的子字符串';象征
Java '之间的子字符串';象征,java,Java,我想获取介于'和'之间的url。这是我尝试的,它给出的字符串索引超出范围:-1错误 String html = "<img src='http://res.cloudinary.com/test/image/upload/v1/testFolder/1024x1024.jpg'/>"; html.substring((html.indexOf("'")), html.indexOf("'")); String html=”“; substring((html.indexOf(“”
我想获取介于'
和'
之间的url。这是我尝试的,它给出的字符串索引超出范围:-1错误
String html = "<img src='http://res.cloudinary.com/test/image/upload/v1/testFolder/1024x1024.jpg'/>";
html.substring((html.indexOf("'")), html.indexOf("'"));
String html=”“;
substring((html.indexOf(“”),html.indexOf(“”);
我还尝试了html.substring((html.indexOf(“”))+1,html.indexOf(“”)代码>
如何获取'
和'
之间的url?您必须将html.indexOf(“”)更改为html.lastIndexOf(“”)
试试看:
public static void main(String[] args) throws ClassNotFoundException {
String html = "<img src='http://res.cloudinary.com/test/image/upload/v1/testFolder/1024x1024.jpg'/>";
System.out.println(html.substring(html.indexOf("'") + 1, html.lastIndexOf("'")));
}
publicstaticvoidmain(字符串[]args)抛出ClassNotFoundException{
字符串html=“”;
System.out.println(html.substring(html.indexOf(“”)+1,html.lastIndexOf(“”));
}
您必须将html.indexOf(“”)更改为html.lastIndexOf(“”)
试试看:
public static void main(String[] args) throws ClassNotFoundException {
String html = "<img src='http://res.cloudinary.com/test/image/upload/v1/testFolder/1024x1024.jpg'/>";
System.out.println(html.substring(html.indexOf("'") + 1, html.lastIndexOf("'")));
}
publicstaticvoidmain(字符串[]args)抛出ClassNotFoundException{
字符串html=“”;
System.out.println(html.substring(html.indexOf(“”)+1,html.lastIndexOf(“”));
}
您需要保留第一个索引,以便在该点之后搜索下一个索引
int idx = html.indexOf("'") + 1;
int idx2 = html.indexOf("'", idx); // this will find the next ' character
System.out.println(html.substring(idx, idx2));
您需要保留第一个索引,以便可以搜索超出该点的下一个索引
int idx = html.indexOf("'") + 1;
int idx2 = html.indexOf("'", idx); // this will find the next ' character
System.out.println(html.substring(idx, idx2));
您还可以使用正则表达式模式
Pattern p = Pattern.compile("'(.*?)'");
Matcher m = p.matcher(html);
m.find();
m.group(1); // will return http://res.cloudinary.com/test/image/upload/v1/testFolder/1024x1024.jpg
您还可以使用正则表达式模式
Pattern p = Pattern.compile("'(.*?)'");
Matcher m = p.matcher(html);
m.find();
m.group(1); // will return http://res.cloudinary.com/test/image/upload/v1/testFolder/1024x1024.jpg
为什么给定字符的indexOf
会给你不同的结果?好吧,你已经得到了答案,但是Javadocs(通常)是你的朋友。请记住:为什么给定字符的indexOf
会给你不同的结果?好吧,你已经得到了答案,但是Javadocs(通常)是你的朋友请记住:谢谢你的详细回答。写+1
的目的到底是什么?你应该自己试试,看看会发生什么!但答案是,如果你没有+1,它会再次找到相同的“字符”。这并不能回答OP的观察结果,即他得到了一个越界异常:-1.它不应该是System.out.println(html.substring(idx+1,idx2))
或者最好在第一行添加+1
?谢谢您的详细回答。写+1
的目的到底是什么?你应该自己试试,看看会发生什么!但答案是,如果你没有+1,它会再次找到相同的“字符”。这并不能回答OP的观察结果,即他得到了一个越界异常:-1.它不应该是System.out.println(html.substring(idx+1,idx2))
或者最好在第一行加上+1
?谢谢你的回答。我们需要使用lastIndexOf
来查找第二个,正如我从您的答案中所了解的。是的,您将得到介于第一个“和最后一个”之间的字符串。谢谢您的回答。我们需要使用lastIndexOf
来查找第二个,正如我从您的答案中了解到的。是的,您将得到第一个“和最后一个”之间的字符串