ในขณะที่โดยส่วนตัวฉันจะเลือก!str.isBlank()
ตามที่คนอื่น ๆ แนะนำไปแล้ว (หรือstr -> !str.isBlank()
ในฐานะเพรดิเคต) วิธีการที่ทันสมัยและมีประสิทธิภาพมากกว่าที่str.trim()
กล่าวถึงข้างต้นจะใช้str.strip()
- โดยพิจารณาค่าว่างเป็น "ช่องว่าง":
if (str != null && str.strip().length() > 0) {...}
ตัวอย่างเช่น Predicate สำหรับใช้กับสตรีมเช่นในการทดสอบหน่วย:
@Test
public void anyNonEmptyStrippedTest() {
String[] strings = null;
Predicate<String> isNonEmptyStripped = str -> str != null && str.strip().length() > 0;
assertTrue(Optional.ofNullable(strings).map(arr -> Stream.of(arr).noneMatch(isNonEmptyStripped)).orElse(true));
strings = new String[] { null, "", " ", "\\n", "\\t", "\\r" };
assertTrue(Optional.ofNullable(strings).map(arr -> Stream.of(arr).anyMatch(isNonEmptyStripped)).orElse(true));
strings = new String[] { null, "", " ", "\\n", "\\t", "\\r", "test" };
}