提交 9a88ebde 编写于 作者: J Juergen Hoeller

Consistent hasText checks for CharSequence vs String

Issue: SPR-15540
上级 92889906
...@@ -139,17 +139,7 @@ public abstract class StringUtils { ...@@ -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 { ...@@ -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.*; ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册