Skip to content

Commit 899f779

Browse files
committed
Merge pull request functionaljava#10 from magro/string-functions
Add isNullOrEmpty, isNullOrBlank and isNotNullOrBlank to Strings.
2 parents 7fbc3ad + ee4268b commit 899f779

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

core/src/main/java/fj/function/Strings.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import fj.F;
44
import fj.F2;
5+
import fj.data.Stream;
56
import static fj.Function.curry;
7+
import static fj.function.Booleans.not;
8+
import static fj.function.Characters.isWhitespace;
69

710
/**
811
* Curried string functions.
@@ -14,8 +17,41 @@ private Strings() {
1417
throw new UnsupportedOperationException();
1518
}
1619

20+
/**
21+
* This function checks if a given String contains any non-whitespace character
22+
* (according to {@link Character#isWhitespace(char)}) and if it's also not
23+
* <code>null</code> and not empty ("").
24+
*
25+
* @see #isNullOrBlank
26+
* @see Character#isWhitespace(char)
27+
* @see Characters#isWhitespace
28+
*/
29+
public static final F<String, Boolean> isNotNullOrBlank = new F<String, Boolean>() {
30+
@Override
31+
public Boolean f(final String a) {
32+
return isNotNullOrEmpty.f(a) && Stream.fromString(a).find(not(isWhitespace)).isSome();
33+
}
34+
};
35+
36+
/**
37+
* This function checks if a given String is whitespace (according to {@link Character#isWhitespace(char)}),
38+
* empty ("") or <code>null</code>.
39+
*
40+
* @see #isNotNullOrBlank
41+
* @see Character#isWhitespace(char)
42+
* @see Characters#isWhitespace
43+
*/
44+
public static final F<String, Boolean> isNullOrBlank = new F<String, Boolean>() {
45+
@Override
46+
public Boolean f(final String a) {
47+
return isNullOrEmpty.f(a) || Stream.fromString(a).find(not(isWhitespace)).isNone();
48+
}
49+
};
50+
1751
/**
1852
* This function checks if a given String is neither <code>null</code> nor empty.
53+
*
54+
* @see #isNullOrEmpty
1955
*/
2056
public static final F<String, Boolean> isNotNullOrEmpty = new F<String, Boolean>() {
2157
@Override
@@ -24,6 +60,18 @@ public Boolean f(final String a) {
2460
}
2561
};
2662

63+
/**
64+
* This function checks if a given String is <code>null</code> or empty ({@link String#isEmpty()}).
65+
*
66+
* @see #isNotNullOrEmpty
67+
*/
68+
public static final F<String, Boolean> isNullOrEmpty = new F<String, Boolean>() {
69+
@Override
70+
public Boolean f(final String a) {
71+
return a == null || a.length() == 0;
72+
}
73+
};
74+
2775
/**
2876
* A curried version of {@link String#isEmpty()}.
2977
*/

0 commit comments

Comments
 (0)