git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137815 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Fredrik Westermarck 2004-02-24 22:31:43 +00:00
parent 0ca766679c
commit fd3858e7e1
2 changed files with 68 additions and 3 deletions

View File

@ -54,7 +54,7 @@
* - changes the case of a String</li> * - changes the case of a String</li>
* <li><b>CountMatches</b> * <li><b>CountMatches</b>
* - counts the number of occurrences of one String in another</li> * - counts the number of occurrences of one String in another</li>
* <li><b>IsAlpha/IsNumeric/IsWhitespace</b> * <li><b>IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable</b>
* - checks the characters in a String</li> * - checks the characters in a String</li>
* <li><b>DefaultString</b> * <li><b>DefaultString</b>
* - protects against a null input String</li> * - protects against a null input String</li>
@ -109,8 +109,9 @@
* @author Gary Gregory * @author Gary Gregory
* @author Phil Steitz * @author Phil Steitz
* @author Al Chou * @author Al Chou
* @author Michael Davey
* @since 1.0 * @since 1.0
* @version $Id: StringUtils.java,v 1.127 2004/02/19 21:31:19 fredrik Exp $ * @version $Id: StringUtils.java,v 1.128 2004/02/24 22:31:42 fredrik Exp $
*/ */
public class StringUtils { public class StringUtils {
// Performance testing notes (JDK 1.4, Jul03, scolebourne) // Performance testing notes (JDK 1.4, Jul03, scolebourne)
@ -3862,6 +3863,44 @@ public static boolean isAlphanumericSpace(String str) {
return true; return true;
} }
/**
* <p>Checks if the string contains only ASCII printable characters.</p>
*
* <p><code>null</code> will return <code>false</code>.
* An empty String ("") will return <code>true</code>.</p>
*
* <pre>
* StringUtils.isAsciiPrintable(null) = false
* StringUtils.isAsciiPrintable("") = true
* StringUtils.isAsciiPrintable(" ") = true
* StringUtils.isAsciiPrintable("Ceki") = true
* StringUtils.isAsciiPrintable("ab2c") = true
* StringUtils.isAsciiPrintable("!ab-c~") = true
* StringUtils.isAsciiPrintable("\u0020") = true
* StringUtils.isAsciiPrintable("\u0021") = true
* StringUtils.isAsciiPrintable("\u007e") = true
* StringUtils.isAsciiPrintable("\u007f") = false
* StringUtils.isAsciiPrintable("Ceki G\u00fclc\u00fc") = false
* </pre>
*
* @param str the string to check, may be null
* @return <code>true</code> if every character is in the range
* 32 thru 126
* @since 2.1
*/
public static boolean isAsciiPrintable(String str) {
if (str == null) {
return false;
}
int sz = str.length();
for (int i = 0; i < sz; i++) {
if (CharUtils.isAsciiPrintable(str.charAt(i)) == false) {
return false;
}
}
return true;
}
/** /**
* <p>Checks if the String contains only unicode digits. * <p>Checks if the String contains only unicode digits.
* A decimal point is not a unicode digit and returns false.</p> * A decimal point is not a unicode digit and returns false.</p>

View File

@ -24,7 +24,8 @@
* Unit tests {@link org.apache.commons.lang.StringUtils} - Substring methods * Unit tests {@link org.apache.commons.lang.StringUtils} - Substring methods
* *
* @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a> * @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a>
* @version $Id: StringUtilsIsTest.java,v 1.8 2004/02/18 23:06:19 ggregory Exp $ * @author Michael Davey
* @version $Id: StringUtilsIsTest.java,v 1.9 2004/02/24 22:31:43 fredrik Exp $
*/ */
public class StringUtilsIsTest extends TestCase { public class StringUtilsIsTest extends TestCase {
@ -123,6 +124,31 @@ public void testIsAlphanumericSpace() {
assertEquals(false, StringUtils.isAlphanumericSpace("hkHKHik*khbkuh")); assertEquals(false, StringUtils.isAlphanumericSpace("hkHKHik*khbkuh"));
} }
public void testIsAsciiPrintable_String() {
assertEquals(false, StringUtils.isAsciiPrintable(null));
assertEquals(true, StringUtils.isAsciiPrintable(""));
assertEquals(true, StringUtils.isAsciiPrintable(" "));
assertEquals(true, StringUtils.isAsciiPrintable("a"));
assertEquals(true, StringUtils.isAsciiPrintable("A"));
assertEquals(true, StringUtils.isAsciiPrintable("1"));
assertEquals(true, StringUtils.isAsciiPrintable("Ceki"));
assertEquals(true, StringUtils.isAsciiPrintable("!ab2c~"));
assertEquals(true, StringUtils.isAsciiPrintable("1000"));
assertEquals(true, StringUtils.isAsciiPrintable("10 00"));
assertEquals(false, StringUtils.isAsciiPrintable("10\t00"));
assertEquals(true, StringUtils.isAsciiPrintable("10.00"));
assertEquals(true, StringUtils.isAsciiPrintable("10,00"));
assertEquals(true, StringUtils.isAsciiPrintable("!ab-c~"));
assertEquals(true, StringUtils.isAsciiPrintable("hkHK=Hik6i?UGH_KJgU7.tUJgKJ*GI87GI,kug"));
assertEquals(true, StringUtils.isAsciiPrintable("\u0020"));
assertEquals(true, StringUtils.isAsciiPrintable("\u0021"));
assertEquals(true, StringUtils.isAsciiPrintable("\u007e"));
assertEquals(false, StringUtils.isAsciiPrintable("\u007f"));
assertEquals(true, StringUtils.isAsciiPrintable("G?lc?"));
assertEquals(true, StringUtils.isAsciiPrintable("=?iso-8859-1?Q?G=FClc=FC?="));
assertEquals(false, StringUtils.isAsciiPrintable("G\u00fclc\u00fc"));
}
public void testIsNumeric() { public void testIsNumeric() {
assertEquals(false, StringUtils.isNumeric(null)); assertEquals(false, StringUtils.isNumeric(null));
assertEquals(true, StringUtils.isNumeric("")); assertEquals(true, StringUtils.isNumeric(""));