これは、Java 8
public static long countUpperCaseWord(String input) {
// your object must be not null
Objects.requireNonNull(input);
// new stream of the array returned by the split call on input string
return Stream.of(input.split("\\s"))
// we create a second stream that match the predicate passed throw the method filter
.filter(word -> word.equals(word.toUpperCase()))
// finally we want to count how many words match this predicate
.count();
}
エントリで大文字の文字をカウントする必要がある場合を使用してそれを行う方法です:
public static long countUpperCase(String input) {
return input.chars()
.map(i -> (char) i)
.filter(c -> Character.isUpperCase(c))
.count();
}
文字列内
matches()
方法を経由して大文字されています
そして、より一般的なコードを使用してこれを改善したい場合は、次のように書くことができます:
public static long countWordsUsingPredicate(String input, Predicate<String> predicate) {
Objects.requireNonNull(input);
return Stream.of(input.split("\\s"))
.filter(predicate)
.count();
}
及び方法に関するラムダ式として、あなたの述語を渡すことによって、このutilのメソッドを呼び出す:
countUpperCaseWord("THIS BREAK", word -> word.equals(word.toUpperCase()))
複数の小切手または複雑なif文を記述する際に何が問題になりますか? – Brian
問題を解決してください。 '??? '部分には何が入りますか?おそらく、「これが大文字の場合は、カウンターを増やしてください。だから、 "これは大文字ですか?" booleanを返すメソッドを使用します。今度はその方法を実装する必要がありますが、解決するのがより簡単な問題です。 – yshavit
@Brianシンプルな解決策がある限り、私はむしろオッカムの勝利のための剃刀です! とにかく、私は満足のいく答えを見つけることができました。興味を持っていただきありがとうございます! – Anacarnil