2013-03-07 225 views
0

我有一个字符串TMP是如下特殊字符#在一个字符串

<a href="#" class="quickLinks" id="linkQL">Quick Links</a> 

我希望能够知道有HREF后#= ..我觉得做这样的如果(tmp.indexOf(“#”)== 8),但我不能,我认为它是因为#是一个特殊字符

+0

这听起来像是一个正则表达式的匹配。顺便说一下,Java字符串中的'#'没有什么特别之处。 – NPE 2013-03-07 07:55:43

+1

你是什么意思“我无法”? tmp.indexOf('#')应该返回9. – longhua 2013-03-07 07:56:44

+0

如果你真的想要检查字符串'#'是否在'href'字符串后面(例如在href之后的'id'属性中),那么你可以使用正则表达式。如果你想检查'#'是否在'href'属性中,那么你应该使用一个html解析器。 – theon 2013-03-07 08:06:48

回答

0

var tmp = '<a href="#" class="quickLinks" id="linkQL">Quick Links</a>';
tmp.indexOf('#');
这是返回9,这是预期的结果。

+0

这个问题被标记为[[java]',这对我来说看起来并不像是有效的Java ... – NPE 2013-03-07 08:07:41

+0

+1但是一个非常明确的答案。 – 2013-03-07 08:14:34

1

为了测试是否#如下HREF,您可以简单地这样:

if (input.contains("href=\"#\"")) 

没有必要让正则表达式和哈希字符#不是Java的特别,但双引号字符需要转义。

+0

单引号是有效的html,或者至少受浏览器支持。我想这取决于html来自于你对它的外观有多自信。 – theon 2013-03-07 08:49:10

0

尝试正则表达式

boolean matches = s.matches(".+href\\s*=\\s*['\"]#['\"].+"); 
1

如果你想检查href属性包含#,然后用HTML解析器像jsoup

Document doc = Jsoup.parse(html); 
String href = doc.select("a").first().attr("href"); 
boolean isHash = href.equals("#"); 

如果你真的想只检查是否存在在href之后,你可以使用Regex - 但我怀疑你不是这个意思。