2013-03-07 127 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 - 但我懷疑你不是這個意思。