作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个应用程序,它应该获取整个 website-html 文本并将其放入字符串中。然后我想使用 System.out.println 来显示该字符串的一个特定片段。我的代码
import java.net.*;
import java.io.*;
public class URLConnectionReader {
public static void main(String[] args) throws Exception {
URL oracle = new URL("www.example-blahblahblah.com");
BufferedReader in = new BufferedReader(
new InputStreamReader(oracle.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine.substring(inputLine.indexOf("<section class=\"horoscope-content\"><p>")+1, inputLine.lastIndexOf("</p")));
in.close();
}
}
它应该显示下面输入的文本:
<section class="horoscope-content">
<p>Text text text text</p>
相反,我有这个:
线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 在 java.lang.String.substring(来源未知) 在 URLConnectionReader.main(URLConnectionReader.java:14)
我该怎么办?
最佳答案
您应该使用更具包容性的正则表达式而不是 indexOf
,以便在对输入进行细微修改时更加稳定:
Pattern pattern = Pattern.compile("<section\\s+class\\s*=\\s*\"horoscope-content\"\\s*>\\s*<p>(.*?)</p>", Pattern.DOTALL);
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
System.out.println(matcher.group());
System.out.println("Text in paragraph: " + matcher.group(1));
}
这将容忍换行符和其他空白字符。
关于java - 需要特定的弦乐部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20132930/
我在 Rails 应用程序中有一个花哨的“工作表”样式 View ,加载时间太长。 (在开发模式下,是的,我知道那里没有缓存,“在 57893 毫秒内完成(查看:54975,DB:855)”)工作表是
我是一名优秀的程序员,十分优秀!