-1

我有一堆单词,我需要得到其中包含“w”字母的最长单词。我已经这样做了

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”以及该单词的长度。请帮我

4

2 回答 2

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

于 2013-10-18T04:40:12.140 回答
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

于 2013-10-18T04:28:56.983 回答