2013-10-17 48 views
-1

我有一堆詞,我需要得到最長的詞,其中有'w'字母。我已經做到了這樣正則表達式計算單詞的長度,如果它有'w'字母。 Java

public static boolean longestWWord(String s) 
{ 
    boolean hasw=false; 
    for(int i = 0; i < s.length(); i++) 
    { 
     if(s.charAt(i)=='w') 
     { 
      hasw = true; 
     } 
    } 
    return hasw; 
} 
    System.out.println("Word with maximum 'w' chareckters : "); 
    int counter =0; 
    String word=""; 
    for (String ss : arr) { 
     if(longestWWord(ss)){ 
      if(ss.length()>counter) 
      { 
       counter = ss.length(); 
       word = ss; 
      } 
     } 
    } 
    System.out.println(word); 

但現在我有一個任務,如果找到這個詞有「W」中,並使用常規expressinos這個詞的長度。請幫助我

+1

我不明白。你不是已經這樣做了嗎?爲什麼你需要使用正則表達式? –

+1

爲什麼你需要這種方法'longestWWord()'?是不是在做什麼['String.contains()'](http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#contains(java.lang.CharSequence))已經? –

+1

你可以用正則表達式找到帶有''w'「(你將需要轉義)的單詞,但是對於長度,你仍然會使用相同的方法。 –

回答

1
public class MatcherTest { 

    public static void main(String[] args) { 

     String word = "wata what word down a adf asdfasdf"; 

     Pattern p = Pattern.compile("\\w*[wW]+\\w*"); 
     Matcher m = p.matcher(word); 

     while (m.find()) { 
      System.out.println(m.group()); 
     } 
    } 
} 

將輸出:

wata 
what 
word 
down 

您可以在這裏找到文檔http://docs.oracle.com/javase/tutorial/essential/regex/index.html

0

這個\b[a-zA-Z0-9]*[wW][a-zA-Z0-9]*\b正則表達式將匹配所有w或w的單詞 將匹配的單詞傳遞給函數以查找長度。而在Java中,你必須逃脫反斜線像

\\b[a-zA-Z0-9]*[wW][a-zA-Z0-9]*\\b

+0

對於這樣一個簡單的任務來說不是太多正則表達式嗎?他已經有了語言,不需要尋找文字邊界和東西 –

相關問題