Java似乎无法识别正斜杠

Java似乎无法识别正斜杠,java,string,character-encoding,Java,String,Character Encoding,我试图计算URL中的正向斜杠数 然而,Java和StringUtils似乎不想这样做。我怀疑这与编码有关,但使用URLDecker似乎没有帮助 我有: p.rint("Product"); p.rint(url); p.rint(StringUtils.countMatches(URLDecoder.decode("url", "UTF-8"), "/")); 打印出的结果如下所示: Product http://stackoverflow.com/questions/ask 0 如果一切都

我试图计算URL中的正向斜杠数

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

我有:

p.rint("Product");
p.rint(url);
p.rint(StringUtils.countMatches(URLDecoder.decode("url", "UTF-8"), "/"));
打印出的结果如下所示:

Product
http://stackoverflow.com/questions/ask
0
如果一切都像我期望的那样,那么打印输出的最后一行肯定是4


我也没有使用URLDecoder.decode尝试过这个方法。

您正在计算常量字符串url的前斜杠,而您想从名为url的变量中计算它们,这就是问题所在:

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, "/"));
试试这个:

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

您正在传递URL,而不是http://stackoverflow.com/questions/ask

哇,我在一个答案上获得的票数比Jon Skeet多。。。这是真的吗:OI没有投票给Jon,只是为了你更快的9秒,为了让它发生,你得到了更多的投票:@AhmadSaleh gz,最明显的答案总是最好的;作为将来的参考,当你问一个问题时,有必要去掉像p.rint这样的小黑客。为了让读者更清楚,请先将代码更改为使用System.out.println。那么就没有什么可解释的了,问题也不可能存在。谢谢你的提示。我以前曾被编码问题困扰过,我确信这就是问题所在。我完全忘记读密码了。
p.rint("Product");
p.rint(url);
p.rint(StringUtils.countMatches(URLDecoder.decode(url, "UTF-8"), "/")); // pass varible url