入力文字列が有効かどうかを調べます。条件は文字列
length
より大きく、文字はa-z, A-Z or 0-9
でなければなりません。Java 8ストリームAPIを使用した文字列の長さと文字の検証有効な文字列:
aA12Z22
、qwerty
、ABCDEF0
有効ではありません:
13A
、12CrW#
、@**=_+
私はそれが正しいJava 8 streams
を使用して取得しようとしています。私はここに解決策を持っています。質問 - これを行う良い方法がありますか(streams
を使用)?
boolean valid = Stream.of(string)
.flatMapToInt(s -> {
if (s.length() < 5) return IntStream.of(42); // 42 is a '*' char
else return s.chars();
})
.mapToObj(i -> (char) i)
.allMatch(c -> Character.isLetterOrDigit(c));
System.out.println(valid);
regex: 'string.matches(" [A-Za-z0-9] {5、} ")'を使うのはなぜですか?ストリームは不要で、難しく、効率が悪いようです。 –
ストリームAPIを使用してなぜそれをしたいのか説明できますか?正規表現と比較してどのような利点がありますか? –