如何计算次数"。"出现在网页上?

时间:2015-12-29 07:06:15

标签: java html

我想浏览一个html页面并计算次数"。" (期间)出现。这里我有一些代码读取html,并打印出所需的输出。

我正在考虑修改此代码,但看到这是一个简单的问题,也许我们不需要经历修改它的麻烦;相反,我们可以直接编写新程序。

这里是我读取网页html的代码(很多应该是不必要的代码):

import edu.duke.*;


public class URLFinder {
    public StorageResource findURLs(String url) {
        URLResource page = new URLResource(url);
        String source = page.asString();
        StorageResource store = new StorageResource();
        int start = 0;
        while (true) {
            int index = source.indexOf("href=", start);
            if (index == -1) {
                break;
            }
            int firstQuote = index+6; // after href="
            int endQuote = source.indexOf("\"", firstQuote);
            String sub = source.substring(firstQuote, endQuote);
            if (sub.contains(".")) {
                store.add(sub);
            }
            start = endQuote + 1;
        }
        return store;
    }

    public void testURL() {
        StorageResource s1 = findURLs("http://www.dukelearntoprogram.com/course2/data/newyorktimes.html");
        //StorageResource s2 = findURLs("http://www.doctorswithoutborders.org");
        for (String link : s1.data()) {
            System.out.println(link);
        }
        System.out.println("size = " + s1.size());
        //System.out.println("size = " + s2.size());
    }
}

2 个答案:

答案 0 :(得分:1)

你可以这样做:

int count = 0;
for (char c : source.toCharArray()) {
    if (c == '.') {
        count++;
    }
}

或者,使用Apache Commons库及其出色的StringUtils函数:StringUtils.countMatches(String string, String subStringToCount)。然后,您只需StringUtils.countMatches(source, ".");来获取句点计数。

如果您将其放入当前程序,则需要修改findUrls功能,并在String source = page.asString();之后插入计数。

或者如果您只是想在自己的功能中使用它:

public int countPeriods(String url) {
    URLResource page = new URLResource(url);
    String source = page.asString();
    int count = 0;
    for (char c : source.toCharArray()) {
        if (c == '.') {
            count++;
        }
    }
    return count;
}

现在您需要做的就是将一个url作为字符串传递给函数,它会返回您的计数。

答案 1 :(得分:1)

一种方法是使用indexOf方法:

int index = -1;
int count = 0;
String source = ...;
while((index = source.indexOf(".", ++index) != -1)
    count++

正如@TJCrowder所指出的那样,你可能需要让一些脚本执行。如果是这种情况,请参阅this之前的SO问题。