0

我正在尝试计算 URL 中正斜杠的数量。

然而,Java 和 StringUtils 似乎不想这样做。我怀疑它与编码有关,但使用 URLDecoder 似乎没有帮助。

我有:

p.rint("Product");
p.rint(url);
p.rint(StringUtils.countMatches(URLDecoder.decode("url", "UTF-8"), "/"));

打印出如下结果:

Product
http://stackoverflow.com/questions/ask
0

如果一切都按我的预期工作,那么打印输出的最后一行肯定应该是4......

Note: p.rint() is my little hack for doing System.out.println()

我也试过了,但没有使用 URLDecoder.decode()。

4

3 回答 3

6

您正在计算常量String的正斜杠"url",而您想从名为的变量中计算它们url

于 2013-10-31T06:58:56.123 回答
5

这就是问题:

URLDecoder.decode("url", "UTF-8")

那应该是:

URLDecoder.decode(url, "UTF-8")

否则,您正在解码文字“url” - 它将解码为自身(“url”) - 并且字符串“url”不包含任何斜杠。大概您实际上对url变量的值感兴趣。

下次,帮助诊断此问题的一种简单方法是StringUtils.countMatches通过另一个局部变量将您担心的方法 ( ) 与所有其他评估隔离开来:

p.rint("Product");
p.rint(url);
String decodedUrl = URLDecoder.decode(url, "UTF-8");
p.rint(decodedUrl);
p.rint(StringUtils.countMatches(decodedUrl, "/"));
于 2013-10-31T06:59:04.830 回答
2

尝试这个:

p.rint("Product");
p.rint(url);
p.rint(StringUtils.countMatches(URLDecoder.decode(url, "UTF-8"), "/")); // pass varible url

你正在过去,URL而不是http://stackoverflow.com/questions/ask

于 2013-10-31T07:00:20.710 回答