####This Lang API is an extension to the java.lang package. https://wiki.apache.org/commons/Langjava
###Lang aims to provide:apache
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.5</version> </dependency>
###代碼示例:api
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.text.WordUtils; import org.junit.Test; import com.zx.common.log.LogUtil; public class StringUtilsTest { @Test public void testIsEmpty() { //isEmpty Checks if a CharSequence is empty ("") or null. 斷某字符串是否爲空,爲空的標準是str null 或 str.length() == 0 //NOTE: This method changed in Lang version 2.0. It no longer trims the CharSequence. That functionality is available in isBlank(). assertTrue(StringUtils.isEmpty(null)); // true assertTrue(StringUtils.isEmpty("")); // true assertFalse(StringUtils.isEmpty(" ")); // false 這裏要注意下 assertFalse(StringUtils.isEmpty("bob")); // false assertFalse(StringUtils.isEmpty(" bob ")); // false //isBlank 判斷某字符串是否爲空或長度爲0或由空白符(whitespace)構成 assertTrue(StringUtils.isBlank(null)); // true assertTrue(StringUtils.isBlank("")); // true assertTrue(StringUtils.isBlank(" ")); // true assertFalse(StringUtils.isBlank("bob")); // false assertFalse(StringUtils.isBlank(" bob ")); // false } @Test public void testTrim() { //Removes control characters (char <= 32) from both ends of this String, handling null by returning null. 去掉字符串兩端的控制符(control characters, char <= 32) assertEquals(null, StringUtils.trim(null)); // null assertEquals("", StringUtils.trim("")); // "" assertEquals("", StringUtils.trim(" ")); // "" assertEquals("abc", StringUtils.trim("abc")); // "abc" assertEquals("abc", StringUtils.trim(" abc")); // "abc" assertEquals("abc", StringUtils.trim(" abc ")); // "abc" assertEquals("ab c", StringUtils.trim(" ab c ")); // "ab c" } @Test public void testStrip() { // Strips whitespace from the start and end of a String. assertEquals(null, StringUtils.strip(null)); // null assertEquals("", StringUtils.strip("")); // "" assertEquals("", StringUtils.strip(" ")); // "" assertEquals("abc", StringUtils.strip("abc")); // "abc" assertEquals("abc", StringUtils.strip(" abc")); // "abc" assertEquals("abc", StringUtils.strip("abc ")); // "abc" assertEquals("abc", StringUtils.strip(" abc ")); // "abc" assertEquals("ab c", StringUtils.strip(" ab c ")); // "ab c" //Strips any of a set of characters from the start and end of a String. This is similar to String.trim() but allows the characters to be stripped to be controlled. //strip 第二個參數中的每一個參數都是要剔除的,不要看成一個總體 assertEquals(" abc", StringUtils.strip(" abcyx", "xyz")); // " abc" assertEquals(" abc", StringUtils.strip(" abcyxz", "xyz")); // " abc" //Strips any of a set of characters from the start of a String. assertEquals("abcxyz ", StringUtils.stripStart("yxabcxyz ", "xyz")); // "abcxyz " assertEquals("abcxyz ", StringUtils.stripStart("yxyxyxabcxyz ", "xyz ")); // "abcxyz " assertEquals("abcxyz ", StringUtils.stripStart(" yxyxyxabcxyz ", "xyz ")); // "abcxyz " assertEquals("bcxyz ", StringUtils.stripStart(" yxyxyxabcxyz ", "xyz a")); // "abcxyz " assertEquals("abcxyz ", StringUtils.stripStart(" yxyxyxabcxyz ", "xyz b")); // "abcxyz " assertEquals(" xyzabc", StringUtils.stripEnd(" xyzabcyx", "xyz")); // " xyzabc" } @Test public void testsplit() { assertEquals(0, StringUtils.split("").length);//[] assertEquals("abc", StringUtils.split(" abc ")[0]);//["abc"] //默認半角空格分割 String str1 = "aaa bbb ccc"; String[] dim1 = StringUtils.split(str1); // => ["aaa", "bbb", "ccc"] assertEquals(3, dim1.length);//3 assertEquals("aaa", dim1[0]);//"aaa" assertEquals("bbb", dim1[1]);//"bbb" assertEquals("ccc", dim1[2]);//"ccc" //指定分隔符 String str2 = ",aaa,bbb,ccc,"; String[] dim2 = StringUtils.split(str2, ","); // => ["aaa", "bbb", "ccc"] assertEquals(3, dim2.length);//3 assertEquals("aaa", dim2[0]);//"aaa" assertEquals("bbb", dim2[1]);//"bbb" assertEquals("ccc", dim2[2]);//"ccc" //去除空字符串 String str3 = "aaa,,bbb"; String[] dim3 = StringUtils.split(str3, ","); // => ["aaa", "bbb"] assertEquals(2, dim3.length);//2 assertEquals("aaa", dim3[0]);//"aaa" assertEquals("bbb", dim3[1]);//"bbb" //包含空字符串 String str4 = "aaa,,bbb"; String[] dim4 = StringUtils.splitPreserveAllTokens(str4, ","); // => ["aaa", "", "bbb"] assertEquals(3, dim4.length);//3 assertEquals("aaa", dim4[0]);//"aaa" assertEquals("", dim4[1]);//"" assertEquals("bbb", dim4[2]);//"bbb" //指定分割的最大次數(超事後不分割) String str5 = "aaa,bbb,ccc"; String[] dim5 = StringUtils.split(str5, ",", 2); // => ["aaa", "bbb,ccc"] assertEquals(2, dim5.length);//2 assertEquals("aaa", dim5[0]);//"aaa" assertEquals("bbb,ccc", dim5[1]);//"bbb,ccc" } @Test public void testJoin() { //數組元素拼接 String[] array = {"aaa", "bbb", "ccc"}; String result1 = StringUtils.join(array, ","); assertEquals("aaa,bbb,ccc", result1);//"aaa,bbb,ccc" //集合元素拼接 List<String> list = new ArrayList<String>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); String result2 = StringUtils.join(list, ","); assertEquals("aaa,bbb,ccc", result2);//"aaa,bbb,ccc" } @Test public void testEscape() { assertEquals("測試測試哦", StringEscapeUtils.escapeCsv("測試測試哦"));//"測試測試哦" assertEquals("\"測試,測試哦\"", StringEscapeUtils.escapeCsv("測試,測試哦"));//"\"測試,測試哦\"" assertEquals("\"測試\n測試哦\"", StringEscapeUtils.escapeCsv("測試\n測試哦"));//"\"測試\n測試哦\"" assertEquals("測試測試哦", StringEscapeUtils.escapeHtml4("測試測試哦"));//"<p>測試測試哦</p>" //StringEscapeUtils.escapeJava //StringEscapeUtils.escapeEcmaScript //StringEscapeUtils.escapeXml assertEquals("He didn't say, \\\"Stop!\\\"", StringEscapeUtils.escapeJava("He didn't say, \"Stop!\""));//"\"rensaninng\"\uFF0C\u6B22\u8FCE\u60A8\uFF01" assertEquals("He didn\\\'t say, \\\"Stop!\\\"", StringEscapeUtils.escapeEcmaScript("He didn't say, \"Stop!\""));//"\u6D4B\u8BD5\'\u6D4B\u8BD5\u54E6" } @Test public void testRandom() { // 10位英字 assertEquals(10, RandomStringUtils.randomAlphabetic(10).length()); // 10位英數 assertEquals(10, RandomStringUtils.randomAlphanumeric(10).length()); // 10位ASCII碼 assertEquals(10, RandomStringUtils.randomAscii(10).length()); // 指定文字10位 assertEquals(10, RandomStringUtils.random(10, "abcde").length()); LogUtil.get(this.getClass()).debug(RandomStringUtils.randomAlphabetic(10)); LogUtil.get(this.getClass()).debug(RandomStringUtils.randomAlphanumeric(10)); LogUtil.get(this.getClass()).debug(RandomStringUtils.randomAscii(10)); LogUtil.get(this.getClass()).debug(RandomStringUtils.random(10, "abced")); LogUtil.get(this.getClass()).debug(RandomStringUtils.random(10)); LogUtil.get(this.getClass()).debug(RandomStringUtils.randomNumeric(10)); } @Test public void testArray() { // 追加元素到數組尾部 int[] array1 = {1, 2}; array1 = ArrayUtils.add(array1, 3); // => [1, 2, 3] assertEquals(3, array1.length);//3 assertEquals(3, array1[2]);//3 // 刪除指定位置的元素 int[] array2 = {1, 2, 3}; array2 = ArrayUtils.remove(array2, 2); // => [1, 2] assertEquals(2, array2.length);//2 // 截取部分元素 int[] array3 = {1, 2, 3, 4}; array3 = ArrayUtils.subarray(array3, 1, 3); // => [2, 3] assertEquals(2, array3.length);//2 // 數組拷貝 String[] array4 = {"aaa", "bbb", "ccc"}; String[] copied = (String[]) ArrayUtils.clone(array4); // => {"aaa", "bbb", "ccc"} assertEquals(3, copied.length);//3 // 判斷是否包含某元素 String[] array5 = {"aaa", "bbb", "ccc", "bbb"}; boolean result1 = ArrayUtils.contains(array5, "bbb"); // => true assertTrue(result1);//true // 判斷某元素在數組中出現的位置(從前日後,沒有返回-1) int result2 = ArrayUtils.indexOf(array5, "bbb"); // => 1 assertEquals(1, result2);//1 result2 = ArrayUtils.indexOf(array5, "bbbb"); // => 1 assertEquals(-1, result2);//1 // 判斷某元素在數組中出現的位置(從後往前,沒有返回-1) int result3 = ArrayUtils.lastIndexOf(array5, "bbb"); // => 3 assertEquals(3, result3);//3 // 數組轉Map Map<Object, Object> map = ArrayUtils.toMap(new String[][] {{"key1", "value1"}, {"key2", "value2"}}); assertEquals("value1", map.get("key1"));//"value1" assertEquals("value2", map.get("key2"));//"value2" // 判斷數組是否爲空 Object[] array61 = new Object[0]; Object[] array62 = null; Object[] array63 = new Object[] {"aaa"}; assertTrue(ArrayUtils.isEmpty(array61));//true assertTrue(ArrayUtils.isEmpty(array62));//true assertTrue(ArrayUtils.isNotEmpty(array63));//true // 判斷數組長度是否相等 Object[] array71 = new Object[] {"aa", "bb", "cc"}; Object[] array72 = new Object[] {"dd", "ee", "ff"}; assertTrue(ArrayUtils.isSameLength(array71, array72));//true // // 判斷數組元素內容是否相等 // Object[] array81 = new Object[] {"aa", "bb", "cc"}; // Object[] array82 = new Object[] {"aa", "bb", "cc"}; // assertEquals("", ArrayUtils.isEquals(array81, array82)); // Integer[] 轉化爲 int[] Integer[] array9 = new Integer[] {1, 2}; int[] result = ArrayUtils.toPrimitive(array9); assertEquals(2, result.length);//2 assertEquals(1, result[0]);//1 // int[] 轉化爲 Integer[] int[] array10 = new int[] {1, 2}; Integer[] result10 = ArrayUtils.toObject(array10); assertEquals(2, result.length);//2 assertEquals(1, result10[0].intValue());//1 } @Test(expected = IllegalArgumentException.class) public void testAbbreviateException() { assertEquals("abcdefg", StringUtils.abbreviate("abcdefg", 3)); } @Test public void testAbbreviate() { //對長字符串中的多餘指定位數用 省略號表示 , Abbreviates a String using ellipses. This will turn "Now is the time for all good men" into "Now is the time for..." //Specifically: //•If the number of characters in str is less than or equal to maxWidth, return str. //•Else abbreviate it to (substring(str, 0, max-3) + "..."). //•If maxWidth is less than 4, throw an IllegalArgumentException. //•In no case will it return a String of length greater than maxWidth. assertEquals("Pl...", StringUtils.abbreviate("Please check the logs for an error.", 5)); assertEquals("Please...", StringUtils.abbreviate("Please check the logs for an error.", 9)); assertEquals("Please ...", StringUtils.abbreviate("Please check the logs for an error.", 10)); assertEquals(null, StringUtils.abbreviate(null, 1)); assertEquals("abc...", StringUtils.abbreviate("abcdefg", 6)); assertEquals("abcdefg", StringUtils.abbreviate("abcdefg", 7)); assertEquals("abcdefg", StringUtils.abbreviate("abcdefg", 8)); assertEquals("abcdefg", StringUtils.abbreviate("abcdefg", 8)); } @Test public void testcapitalize() { // 首字符大寫 assertEquals("Jakarta commons", StringUtils.capitalize("jakarta commons")); assertEquals(null, StringUtils.capitalize(null)); assertEquals("", StringUtils.capitalize("")); assertEquals("Cat", StringUtils.capitalize("cat")); assertEquals("CAt", StringUtils.capitalize("cAt")); assertEquals("'cat'", StringUtils.capitalize("'cat'")); } @Test public void testwordcapitalize() { // 首字符大寫,這個是針對一個句子中的全部的字符的 assertEquals("Jakarta Commons", WordUtils.capitalize("jakarta commons")); assertEquals("I Am FINE", WordUtils.capitalize("i am FINE"));//WordUtils.capitalize("i am FINE") = "I Am FINE" assertEquals("Jakarta Commons", WordUtils.capitalizeFully("jakarta COMMONS")); assertEquals("I Am Fine", WordUtils.capitalizeFully("i am FINE")); } @Test public void testcenter() { // 字符居中 assertEquals(" java ", StringUtils.center("java", 10)); } @Test public void testreplace() { // 字符替換 assertEquals("This is a illustration for replace and overlay feature", StringUtils.replace("This is a demo for replace and overlay feature", "demo", "illustration")); String message = "Your password is: somepassword"; assertEquals("Your password is: *****", StringUtils.overlay(message, "*****", 18, message.length())); } @Test public void testrepeat() { // 字符重複 assertEquals("abcabc", StringUtils.repeat("abc", 2)); } @Test public void testUpper() { // 字符大小寫判斷 assertTrue(StringUtils.isAllLowerCase("abcabc")); assertTrue(StringUtils.isAllUpperCase("ABCABC")); } @Test public void testZc() { // 字符組成判斷 assertTrue(StringUtils.isAlphanumericSpace("abcabc")); assertTrue(StringUtils.isAlphanumericSpace("abcabc123 ")); assertFalse(StringUtils.isAlphaSpace("abcabc123 ")); assertTrue(StringUtils.isAlphanumeric("abcabc123")); assertFalse(StringUtils.isNumeric("abcabc123")); assertTrue(StringUtils.isAlpha("ABCABC")); assertTrue(StringUtils.isNumericSpace("123 ")); assertTrue(StringUtils.isAsciiPrintable("123 ")); assertTrue(StringUtils.isWhitespace(" ")); } @Test public void testOther() { // 其它判斷 assertEquals(4,StringUtils.countMatches("ababsssababa", "ab"));//小字符串在大字符串中的匹配次數 assertEquals("fedcba",StringUtils.reverse("abcdef"));//字符串倒轉 assertEquals("i AM A-a*A",StringUtils.swapCase("I am a-A*a") );//大小寫轉換,空格不動 assertEquals("abcTTT",StringUtils.rightPad("abc", 6, 'T') );//在右邊加下字符,使之總長度爲6 assertEquals("ab",StringUtils.left("abc", 2));//取得一個字符串左邊的兩個字符 assertEquals("bc",StringUtils.right("abc", 2));//取得一個字符串右邊的兩個字符 assertTrue(StringUtils.contains("abc", "ab"));//判斷是否包含這個字符 } }
2016-11-06 15:32:41 星期日數組