簡體   English   中英

在Groovy中查找小寫單詞

[英]Find lowercase words in Groovy

我最近開始學習Groovy。 我有一個小任務:從字符串中獲取所有小寫單詞作為列表

我寫了下一個代碼:

public List<String> findWordsInLowercase(String string){
    return string.findAll(/\b[a-z]+\b/)
}

這行得通。 但是我想不使用正則表達式,因為它很難閱讀,理解和記住。

現在,我嘗試不使用正則表達式編寫相同的功能。 我的代碼:

public List<String> findWordsInLowercase(String string){
        def words = string.split()
        words.findAll
                {it ->  for(Character character in it)
                        character.isLowerCase()}
    }

但這不起作用:(

為什么不檢查單詞是否與小寫字母相同,而不是檢查每個字符?

public List<String> findWordsInLowercase(String string) {
    def words = string.split()
    words.findAll { word ->
        word.toLowerCase() == word
    }
}

或者,使您的第一個功能更容易理解:

public List<String> findWordsInLowercase(String string) {
    string.findAll( /\b\p{javaLowerCase}+\b/ )
}

這應該提高可讀性,並且您無需記住它,因為您現在有了一個功能;-)

您還可以使用元編程來擴展 String類,然后在常規方法中使用此擴展

String.metaClass.isLowerCase = { 
    delegate ? delegate.every { it.toCharacter().isLowerCase() } : false
}

public List<String> findWordsInLowercase(String string){
    string.split().findAll { it.isLowerCase() }
}

assert findWordsInLowercase('AAA bbb') == ['bbb']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM