我尝试使用以下代码在其自己的文本中选择包含斜杠的标记
Document testDocument = Jsoup.parse("<p>wanted \\ text test</p>");
Elements els = testDocument.select("p:containsOwn(wanted \\)");
Elements els2 = testDocument.select("p:contains(wanted \\)");
当我使用p:contains(wanted)
时,会返回p标记,但是当我将斜杠添加到结尾时,不会返回任何内容。
答案 0 :(得分:0)
实际上,您在Java代码中定义了testDocument
Document testDocument = Jsoup.parse("<p>wanted \\ text test</p>");//if you print this, <p>wanted \\ text test</p>
所以\你使用了第一个反斜杠用于转义,另一个是该字符串<p>wanted \ text test</p>
中的实际反斜杠。
但是如果你从一个文件中取出这个<p>wanted \\ text test</p>
,那么Java会认为它们是普通字符,因为已经转换了特殊字符。
所以在这里当你试图找到testDocument.select(&#34; p:contains(want \)&#34;)时,实际上不会显示任何文本。
所以最好将反斜杠替换为其他角色并获取文字:
Document testDocument = Jsoup.parse("<p>wanted \\ text test</p>".replace("\\", "/"));
Elements els = testDocument.select("p:containsOwn(wanted \\)");
String x = "wanted /";
Elements els2 = testDocument.select("p:contains("+x+")");
System.out.println(els);
System.out.println(els2);