Consistent hasText checks for CharSequence vs String
Issue: SPR-15540
This commit is contained in:
parent
9288990603
commit
9a88ebdeba
|
@ -139,17 +139,7 @@ public abstract class StringUtils {
|
||||||
* @see Character#isWhitespace
|
* @see Character#isWhitespace
|
||||||
*/
|
*/
|
||||||
public static boolean hasText(@Nullable CharSequence str) {
|
public static boolean hasText(@Nullable CharSequence str) {
|
||||||
if (!hasLength(str)) {
|
return (hasLength(str) && containsText(str));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int strLen = str.length();
|
|
||||||
for (int i = 0; i < strLen; i++) {
|
|
||||||
if (!Character.isWhitespace(str.charAt(i))) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -163,9 +153,19 @@ public abstract class StringUtils {
|
||||||
* @see #hasText(CharSequence)
|
* @see #hasText(CharSequence)
|
||||||
*/
|
*/
|
||||||
public static boolean hasText(@Nullable String str) {
|
public static boolean hasText(@Nullable String str) {
|
||||||
return (str != null && !str.isEmpty() && hasText((CharSequence) str));
|
return (hasLength(str) && containsText(str));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean containsText(CharSequence str) {
|
||||||
|
int strLen = str.length();
|
||||||
|
for (int i = 0; i < strLen; i++) {
|
||||||
|
if (!Character.isWhitespace(str.charAt(i))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether the given {@code CharSequence} contains any whitespace characters.
|
* Check whether the given {@code CharSequence} contains any whitespace characters.
|
||||||
* @param str the {@code CharSequence} to check (may be {@code null})
|
* @param str the {@code CharSequence} to check (may be {@code null})
|
||||||
|
|
|
@ -32,24 +32,24 @@ import static org.junit.Assert.*;
|
||||||
public class StringUtilsTests {
|
public class StringUtilsTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHasTextBlank() throws Exception {
|
public void testHasTextBlank() {
|
||||||
String blank = " ";
|
String blank = " ";
|
||||||
assertEquals(false, StringUtils.hasText(blank));
|
assertEquals(false, StringUtils.hasText(blank));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHasTextNullEmpty() throws Exception {
|
public void testHasTextNullEmpty() {
|
||||||
assertEquals(false, StringUtils.hasText(null));
|
assertEquals(false, StringUtils.hasText(null));
|
||||||
assertEquals(false, StringUtils.hasText(""));
|
assertEquals(false, StringUtils.hasText(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHasTextValid() throws Exception {
|
public void testHasTextValid() {
|
||||||
assertEquals(true, StringUtils.hasText("t"));
|
assertEquals(true, StringUtils.hasText("t"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testContainsWhitespace() throws Exception {
|
public void testContainsWhitespace() {
|
||||||
assertFalse(StringUtils.containsWhitespace(null));
|
assertFalse(StringUtils.containsWhitespace(null));
|
||||||
assertFalse(StringUtils.containsWhitespace(""));
|
assertFalse(StringUtils.containsWhitespace(""));
|
||||||
assertFalse(StringUtils.containsWhitespace("a"));
|
assertFalse(StringUtils.containsWhitespace("a"));
|
||||||
|
@ -62,7 +62,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTrimWhitespace() throws Exception {
|
public void testTrimWhitespace() {
|
||||||
assertEquals(null, StringUtils.trimWhitespace(null));
|
assertEquals(null, StringUtils.trimWhitespace(null));
|
||||||
assertEquals("", StringUtils.trimWhitespace(""));
|
assertEquals("", StringUtils.trimWhitespace(""));
|
||||||
assertEquals("", StringUtils.trimWhitespace(" "));
|
assertEquals("", StringUtils.trimWhitespace(" "));
|
||||||
|
@ -75,7 +75,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTrimAllWhitespace() throws Exception {
|
public void testTrimAllWhitespace() {
|
||||||
assertEquals("", StringUtils.trimAllWhitespace(""));
|
assertEquals("", StringUtils.trimAllWhitespace(""));
|
||||||
assertEquals("", StringUtils.trimAllWhitespace(" "));
|
assertEquals("", StringUtils.trimAllWhitespace(" "));
|
||||||
assertEquals("", StringUtils.trimAllWhitespace("\t"));
|
assertEquals("", StringUtils.trimAllWhitespace("\t"));
|
||||||
|
@ -87,7 +87,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTrimLeadingWhitespace() throws Exception {
|
public void testTrimLeadingWhitespace() {
|
||||||
assertEquals(null, StringUtils.trimLeadingWhitespace(null));
|
assertEquals(null, StringUtils.trimLeadingWhitespace(null));
|
||||||
assertEquals("", StringUtils.trimLeadingWhitespace(""));
|
assertEquals("", StringUtils.trimLeadingWhitespace(""));
|
||||||
assertEquals("", StringUtils.trimLeadingWhitespace(" "));
|
assertEquals("", StringUtils.trimLeadingWhitespace(" "));
|
||||||
|
@ -100,7 +100,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTrimTrailingWhitespace() throws Exception {
|
public void testTrimTrailingWhitespace() {
|
||||||
assertEquals(null, StringUtils.trimTrailingWhitespace(null));
|
assertEquals(null, StringUtils.trimTrailingWhitespace(null));
|
||||||
assertEquals("", StringUtils.trimTrailingWhitespace(""));
|
assertEquals("", StringUtils.trimTrailingWhitespace(""));
|
||||||
assertEquals("", StringUtils.trimTrailingWhitespace(" "));
|
assertEquals("", StringUtils.trimTrailingWhitespace(" "));
|
||||||
|
@ -113,7 +113,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTrimLeadingCharacter() throws Exception {
|
public void testTrimLeadingCharacter() {
|
||||||
assertEquals(null, StringUtils.trimLeadingCharacter(null, ' '));
|
assertEquals(null, StringUtils.trimLeadingCharacter(null, ' '));
|
||||||
assertEquals("", StringUtils.trimLeadingCharacter("", ' '));
|
assertEquals("", StringUtils.trimLeadingCharacter("", ' '));
|
||||||
assertEquals("", StringUtils.trimLeadingCharacter(" ", ' '));
|
assertEquals("", StringUtils.trimLeadingCharacter(" ", ' '));
|
||||||
|
@ -126,7 +126,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTrimTrailingCharacter() throws Exception {
|
public void testTrimTrailingCharacter() {
|
||||||
assertEquals(null, StringUtils.trimTrailingCharacter(null, ' '));
|
assertEquals(null, StringUtils.trimTrailingCharacter(null, ' '));
|
||||||
assertEquals("", StringUtils.trimTrailingCharacter("", ' '));
|
assertEquals("", StringUtils.trimTrailingCharacter("", ' '));
|
||||||
assertEquals("", StringUtils.trimTrailingCharacter(" ", ' '));
|
assertEquals("", StringUtils.trimTrailingCharacter(" ", ' '));
|
||||||
|
@ -166,7 +166,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testReplace() throws Exception {
|
public void testReplace() {
|
||||||
String inString = "a6AazAaa77abaa";
|
String inString = "a6AazAaa77abaa";
|
||||||
String oldPattern = "aa";
|
String oldPattern = "aa";
|
||||||
String newPattern = "foo";
|
String newPattern = "foo";
|
||||||
|
@ -189,7 +189,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDelete() throws Exception {
|
public void testDelete() {
|
||||||
String inString = "The quick brown fox jumped over the lazy dog";
|
String inString = "The quick brown fox jumped over the lazy dog";
|
||||||
|
|
||||||
String noThe = StringUtils.delete(inString, "the");
|
String noThe = StringUtils.delete(inString, "the");
|
||||||
|
@ -216,7 +216,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDeleteAny() throws Exception {
|
public void testDeleteAny() {
|
||||||
String inString = "Able was I ere I saw Elba";
|
String inString = "Able was I ere I saw Elba";
|
||||||
|
|
||||||
String res = StringUtils.deleteAny(inString, "I");
|
String res = StringUtils.deleteAny(inString, "I");
|
||||||
|
@ -598,7 +598,7 @@ public class StringUtilsTests {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testParseLocaleStringSunnyDay() throws Exception {
|
public void testParseLocaleStringSunnyDay() {
|
||||||
Locale expectedLocale = Locale.UK;
|
Locale expectedLocale = Locale.UK;
|
||||||
Locale locale = StringUtils.parseLocaleString(expectedLocale.toString());
|
Locale locale = StringUtils.parseLocaleString(expectedLocale.toString());
|
||||||
assertNotNull("When given a bona-fide Locale string, must not return null.", locale);
|
assertNotNull("When given a bona-fide Locale string, must not return null.", locale);
|
||||||
|
@ -606,19 +606,19 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testParseLocaleStringWithMalformedLocaleString() throws Exception {
|
public void testParseLocaleStringWithMalformedLocaleString() {
|
||||||
Locale locale = StringUtils.parseLocaleString("_banjo_on_my_knee");
|
Locale locale = StringUtils.parseLocaleString("_banjo_on_my_knee");
|
||||||
assertNotNull("When given a malformed Locale string, must not return null.", locale);
|
assertNotNull("When given a malformed Locale string, must not return null.", locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testParseLocaleStringWithEmptyLocaleStringYieldsNullLocale() throws Exception {
|
public void testParseLocaleStringWithEmptyLocaleStringYieldsNullLocale() {
|
||||||
Locale locale = StringUtils.parseLocaleString("");
|
Locale locale = StringUtils.parseLocaleString("");
|
||||||
assertNull("When given an empty Locale string, must return null.", locale);
|
assertNull("When given an empty Locale string, must return null.", locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-8637
|
@Test // SPR-8637
|
||||||
public void testParseLocaleWithMultiSpecialCharactersInVariant() throws Exception {
|
public void testParseLocaleWithMultiSpecialCharactersInVariant() {
|
||||||
String variant = "proper-northern";
|
String variant = "proper-northern";
|
||||||
String localeString = "en_GB_" + variant;
|
String localeString = "en_GB_" + variant;
|
||||||
Locale locale = StringUtils.parseLocaleString(localeString);
|
Locale locale = StringUtils.parseLocaleString(localeString);
|
||||||
|
@ -626,7 +626,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-3671
|
@Test // SPR-3671
|
||||||
public void testParseLocaleWithMultiValuedVariant() throws Exception {
|
public void testParseLocaleWithMultiValuedVariant() {
|
||||||
String variant = "proper_northern";
|
String variant = "proper_northern";
|
||||||
String localeString = "en_GB_" + variant;
|
String localeString = "en_GB_" + variant;
|
||||||
Locale locale = StringUtils.parseLocaleString(localeString);
|
Locale locale = StringUtils.parseLocaleString(localeString);
|
||||||
|
@ -634,7 +634,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-3671
|
@Test // SPR-3671
|
||||||
public void testParseLocaleWithMultiValuedVariantUsingSpacesAsSeparators() throws Exception {
|
public void testParseLocaleWithMultiValuedVariantUsingSpacesAsSeparators() {
|
||||||
String variant = "proper northern";
|
String variant = "proper northern";
|
||||||
String localeString = "en GB " + variant;
|
String localeString = "en GB " + variant;
|
||||||
Locale locale = StringUtils.parseLocaleString(localeString);
|
Locale locale = StringUtils.parseLocaleString(localeString);
|
||||||
|
@ -642,7 +642,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-3671
|
@Test // SPR-3671
|
||||||
public void testParseLocaleWithMultiValuedVariantUsingMixtureOfUnderscoresAndSpacesAsSeparators() throws Exception {
|
public void testParseLocaleWithMultiValuedVariantUsingMixtureOfUnderscoresAndSpacesAsSeparators() {
|
||||||
String variant = "proper northern";
|
String variant = "proper northern";
|
||||||
String localeString = "en_GB_" + variant;
|
String localeString = "en_GB_" + variant;
|
||||||
Locale locale = StringUtils.parseLocaleString(localeString);
|
Locale locale = StringUtils.parseLocaleString(localeString);
|
||||||
|
@ -650,7 +650,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-3671
|
@Test // SPR-3671
|
||||||
public void testParseLocaleWithMultiValuedVariantUsingSpacesAsSeparatorsWithLotsOfLeadingWhitespace() throws Exception {
|
public void testParseLocaleWithMultiValuedVariantUsingSpacesAsSeparatorsWithLotsOfLeadingWhitespace() {
|
||||||
String variant = "proper northern";
|
String variant = "proper northern";
|
||||||
String localeString = "en GB " + variant; // lots of whitespace
|
String localeString = "en GB " + variant; // lots of whitespace
|
||||||
Locale locale = StringUtils.parseLocaleString(localeString);
|
Locale locale = StringUtils.parseLocaleString(localeString);
|
||||||
|
@ -658,7 +658,7 @@ public class StringUtilsTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-3671
|
@Test // SPR-3671
|
||||||
public void testParseLocaleWithMultiValuedVariantUsingUnderscoresAsSeparatorsWithLotsOfLeadingWhitespace() throws Exception {
|
public void testParseLocaleWithMultiValuedVariantUsingUnderscoresAsSeparatorsWithLotsOfLeadingWhitespace() {
|
||||||
String variant = "proper_northern";
|
String variant = "proper_northern";
|
||||||
String localeString = "en_GB_____" + variant; // lots of underscores
|
String localeString = "en_GB_____" + variant; // lots of underscores
|
||||||
Locale locale = StringUtils.parseLocaleString(localeString);
|
Locale locale = StringUtils.parseLocaleString(localeString);
|
||||||
|
|
Loading…
Reference in New Issue