2013-12-10 94 views
0

當數組argi具有多個分區時,它只能從數組的第二個url中找到單詞,但爲什麼?請在代碼中更正它。它在這裏的一部分: 我做搜索正規表示通過標題網址:完成java上的搜索邏輯

private final Pattern TITLE = Pattern.compile("\\<title\\>(.*)\\<\\/title\\>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL); 

而且searh邏輯在這裏:

public String search(String url, String someword) { 

        try { 
         InputStreamReader in = new InputStreamReader(new URL(url).openStream(),"UTF-8"); 
         StringBuilder input = new StringBuilder(); 
         int ch; 
         while ((ch = in.read()) != -1) { 
          input.append((char) ch); 
         } 
         if (Pattern.compile(someword, Pattern.CASE_INSENSITIVE).matcher(input).find()) { 
          Matcher title = TITLE.matcher(input); 
          if (title.find()) { 
           return title.group(1); 
          } 
         } 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } catch (PatternSyntaxException e) { 
         e.printStackTrace(); 
        } 
        return null; 
       } 

      String[] argi = {"http://localhost:8080/site/dipnagradi","http://localhost:8080/site/contacts"}; 

           for (int i = 0; i < argi.length; i++) { 

            String result = search(argi[i], word); 

            if (result != null) { 


      str = "Search phrase " + "<b>"+ word + "</b>" + " have found " + "<a href=\"" + argi[i] + "\">" + result + "</a>"+ "<p></p>"; 

        } 
            else{ 
             str="Search word not found!"; 
            }  

            if (word == null||word=="") { 

             str = "Enter a search word!"; 


            } 
          } 
          return null; 

       } 
+2

'如果(字== 「」)'ARRRRG MY EYES – user2336315

+6

那一刻當你認爲「今天不會是'=='vs'equals'問題」.. – Maroun

回答

0

使用if (word == null || word.isEmpty()),(初學者)從未使用==在在java中比較Object

此外,對於更詳細的答案,您確實需要發佈您的輸入和期望的輸出。還有什麼「搜索()」。

+0

是的,我的代碼中也有InputStreamReader和正則表達式。所以我改變了你寫我,在這種情況下,我得到了更好的情況,但無論如何它沒有找到第一個網址的單詞中的單詞..但是,如果我在搜索詞中有兩個網址的數組,搜索發現它在這兩個網址..我需要你明白我寫的 –

0

不要使用 '==' 操作符與String作爲字符串是一個對象,並使用equals方法比較..而是使用:if(!"".equals(word){}

+0

好吧,謝謝你,我明白,但也請幫我完成邏輯,因爲搜索沒有找到第一個網址陣列中的單詞..但是,如果我在搜索詞中寫有兩個數組的url,搜索在兩個url中都找到了它 –