很多情況下我們都需要將字符串轉(zhuǎn)換為數(shù)字,或判斷字符串是否是數(shù)字等等操作,NumberUtils幫助我們方便的從字符串轉(zhuǎn)換為數(shù)字,在不使用NumberUtils情況下,若然字符串值不是數(shù)字,使用Integer.parseInt()時(shí)會(huì)報(bào)出java.lang.NumberFormatException,但在NumberUtils的情況下,只會(huì)返回0而不產(chǎn)生錯(cuò)誤
?
????? NumberUtils? and? RandomUtils
?
- public ? class ?TestMain?{??
- ???? public ? static ? void ?main(String[]?args)? throws ?IllegalAccessException?{??
- ????????String?str?=? "12.7" ;??
- ???????? /* ?
- ?????????*?org.apache.commons.lang.NumberUtils已經(jīng)被棄用, ?
- ?????????*?注意要引入org.apache.commons.lang.math.NumberUtils ?
- ?????????*/ ??
- ??
- ???????? //?判斷字符串是否為整數(shù) ??
- ????????NumberUtils.isDigits(str);??
- ??
- ???????? //?判斷字符串是否為數(shù)字 ??
- ????????NumberUtils.isNumber(str);??
- ??
- ???????? //?獲取參數(shù)中最大的值,支持傳入數(shù)組 ??
- ????????NumberUtils.max( 10 ,? 20 ,? 30 );??
- ??
- ???????? //?獲取參數(shù)中最小的值,支持傳入數(shù)組 ??
- ????????NumberUtils.min( 10 ,? 20 ,? 30 );??
- ??
- ???????? //?將字符串轉(zhuǎn)換為int類(lèi)型,支持float,long,short等數(shù)值類(lèi)型 ??
- ????????NumberUtils.toInt(str);??
- ??
- ???????? //?通過(guò)字符串創(chuàng)建BigDecimal類(lèi)型?,支持int,float,long等數(shù)值 ??
- ????????NumberUtils.createBigDecimal(str);??
- ??
- ??
- ???????? /* ?
- ?????????*?RandomUtils幫助我們產(chǎn)生隨機(jī)數(shù),不止是數(shù)字類(lèi)型?,? ?
- ?????????*?連boolean類(lèi)型都可以通過(guò)RandomUtils產(chǎn)生 ?
- ?????????*/ ??
- ????????RandomUtils.nextBoolean();??
- ????????RandomUtils.nextDouble();??
- ????????RandomUtils.nextLong();??
- ???????? //?注意這里傳入的參數(shù)不是隨機(jī)種子,而是在0~1000之間產(chǎn)生一位隨機(jī)數(shù) ??
- ????????RandomUtils.nextInt( 1000 );??
- ??
- ????}??
- }??
- public ? class ?TestMain?{??
- ???? public ? static ? void ?main(String[]?args)? throws ?IllegalAccessException?{??
- ????????String?str?=? "12.7" ;??
- ???????? /* ?
- ?????????*?org.apache.commons.lang.NumberUtils已經(jīng)被棄用, ?
- ?????????*?注意要引入org.apache.commons.lang.math.NumberUtils ?
- ?????????*/ ??
- ??
- ???????? //?判斷字符串是否為整數(shù) ??
- ????????NumberUtils.isDigits(str);??
- ??
- ???????? //?判斷字符串是否為數(shù)字 ??
- ????????NumberUtils.isNumber(str);??
- ??
- ???????? //?獲取參數(shù)中最大的值,支持傳入數(shù)組 ??
- ????????NumberUtils.max( 10 ,? 20 ,? 30 );??
- ??
- ???????? //?獲取參數(shù)中最小的值,支持傳入數(shù)組 ??
- ????????NumberUtils.min( 10 ,? 20 ,? 30 );??
- ??
- ???????? //?將字符串轉(zhuǎn)換為int類(lèi)型,支持float,long,short等數(shù)值類(lèi)型 ??
- ????????NumberUtils.toInt(str);??
- ??
- ???????? //?通過(guò)字符串創(chuàng)建BigDecimal類(lèi)型?,支持int,float,long等數(shù)值 ??
- ????????NumberUtils.createBigDecimal(str);??
- ??
- ??
- ???????? /* ?
- ?????????*?RandomUtils幫助我們產(chǎn)生隨機(jī)數(shù),不止是數(shù)字類(lèi)型?,? ?
- ?????????*?連boolean類(lèi)型都可以通過(guò)RandomUtils產(chǎn)生 ?
- ?????????*/ ??
- ????????RandomUtils.nextBoolean();??
- ????????RandomUtils.nextDouble();??
- ????????RandomUtils.nextLong();??
- ???????? //?注意這里傳入的參數(shù)不是隨機(jī)種子,而是在0~1000之間產(chǎn)生一位隨機(jī)數(shù) ??
- ????????RandomUtils.nextInt( 1000 );??
- ??
- ????}??
- }??
????? 在開(kāi)發(fā)當(dāng)中字符串的使用和操作時(shí)最為頻繁的,而null的字符串經(jīng)常讓我們報(bào)出NullPointerException,在使用StringUtils后,將不需要為字符串的null值而煩惱,卻又提供了更多的操作讓我們更方便的操作字符串
?
????? StringUtils
?
- public ? class ?TestMain?{??
- ???? public ? static ? void ?main(String[]?args)? throws ?IllegalAccessException?{??
- ????????String?str?=? "Hello?World" ;??
- ???????? /* ?
- ?????????*?由于StringUtils擁有100+的方法,筆者不逐一列舉用法, ?
- ?????????*?只列舉筆者認(rèn)為常用的或筆者使用過(guò)的 ?
- ?????????*/ ??
- ??
- ???????? //?isEmpty和isBlank的區(qū)別在于isEmpty不會(huì)忽略空格, ??
- ???????? //?"?"<--對(duì)于這樣的字符串isEmpty會(huì)認(rèn)為不是空, ??
- ???????? //?而isBlank會(huì)認(rèn)為是空,isBlank更常用 ??
- ????????StringUtils.isEmpty(str);??
- ????????StringUtils.isNotEmpty(str);??
- ????????StringUtils.isBlank(str);??
- ????????StringUtils.isNotBlank(str);??
- ??
- ??
- ???????? //?strip??????-->?去除兩端的aa ??
- ???????? //?stripStart?-->?去除開(kāi)始位置的hell ??
- ???????? //?stripEnd???-->?去除結(jié)尾位置的orld ??
- ????????StringUtils.strip(str,? "aa" );??
- ????????StringUtils.stripStart(str,? "hell" );??
- ????????StringUtils.stripEnd(str,? "orld" );??
- ??
- ??
- ???????? //?返回字符串在第三次出現(xiàn)A的位置 ??
- ????????StringUtils.ordinalIndexOf(str,? "A" ,? 3 );??
- ??
- ??
- ???????? //?獲取str?開(kāi)始為hello結(jié)尾為orld中間的字符串 ??
- ???????? //?注意此方法返回字符串??????-->substringBetween ??
- ???????? //?注意此方法返回字符串?dāng)?shù)組(多了個(gè)s)?-->?substringsBetween ??
- ????????StringUtils.substringBetween(str,? "hell" ,? "orld" );??
- ????????StringUtils.substringsBetween(str,? "hell" ,? "orld" );??
- ??
- ??
- ???????? //?重復(fù)字符串,第二種重載形式為在重復(fù)中用hahah拼接 ??
- ????????StringUtils.repeat(str,? 3 );??
- ????????StringUtils.repeat(str,? "hahah" ,? 2 );??
- ??
- ??
- ???????? //?統(tǒng)計(jì)參數(shù)2在字符串中出現(xiàn)的次數(shù) ??
- ????????StringUtils.countMatches(str,? "l" );??
- ??
- ??
- ???????? //?判斷字符串是否全小寫(xiě)或大寫(xiě) ??
- ????????StringUtils.isAllLowerCase(str);??
- ????????StringUtils.isAllUpperCase(str);??
- ??
- ??
- ???????? //?isAlpha????????-->?全部由字母組成返回true ??
- ???????? //?isNumeric??????-->全部由數(shù)字組成返回true ??
- ???????? //?isAlphanumeric?-->全部由字母或數(shù)字組成返回true ??
- ???????? //?isAlphaSpace???-->全部由字母或空格組成返回true ??
- ???????? //?isWhitespace???-->全部由空格組成返回true ??
- ????????StringUtils.isAlpha(str);??
- ????????StringUtils.isNumeric(str);??
- ????????StringUtils.isAlphanumeric(str);??
- ????????StringUtils.isAlphaSpace(str);??
- ????????StringUtils.isWhitespace(str);??
- ??
- ??
- ???????? //?縮進(jìn)字符串,第二參數(shù)最低為?4,要包含... ??
- ???????? //?現(xiàn)在Hello?World輸出為H... ??
- ????????StringUtils.abbreviate(str,? 4 );??
- ??
- ??
- ???????? //?首字母大寫(xiě)或小寫(xiě) ??
- ????????StringUtils.capitalize(str);??
- ????????StringUtils.uncapitalize(str);??
- ??
- ??
- ???????? //?將字符串?dāng)?shù)組轉(zhuǎn)變?yōu)橐粋€(gè)字符串,通過(guò)","拼接,支持傳入iterator和collection ??
- ????????StringUtils.join( new ?String[]?{? "Hello" ,? "World" ?},? "," );??
- ??
- ??
- ??
- ???????? /* ?
- ?????????*?經(jīng)常性要把后臺(tái)的字符串傳遞到前提作為html代碼進(jìn)行解釋, ?
- ?????????*?可以使用以下方法進(jìn)行轉(zhuǎn)換,以下方法輸出為 ?
- ?????????*?<p>Hello</p> ?
- ?????????*/ ??
- ????????StringEscapeUtils.escapeHtml("Hello??
- ");??
- ????}??
- }??
- public ? class ?TestMain?{??
- ???? public ? static ? void ?main(String[]?args)? throws ?IllegalAccessException?{??
- ????????String?str?=? "Hello?World" ;??
- ???????? /* ?
- ?????????*?由于StringUtils擁有100+的方法,筆者不逐一列舉用法, ?
- ?????????*?只列舉筆者認(rèn)為常用的或筆者使用過(guò)的 ?
- ?????????*/ ??
- ??
- ???????? //?isEmpty和isBlank的區(qū)別在于isEmpty不會(huì)忽略空格, ??
- ???????? //?"?"<--對(duì)于這樣的字符串isEmpty會(huì)認(rèn)為不是空, ??
- ???????? //?而isBlank會(huì)認(rèn)為是空,isBlank更常用 ??
- ????????StringUtils.isEmpty(str);??
- ????????StringUtils.isNotEmpty(str);??
- ????????StringUtils.isBlank(str);??
- ????????StringUtils.isNotBlank(str);??
- ??
- ??
- ???????? //?strip??????-->?去除兩端的aa ??
- ???????? //?stripStart?-->?去除開(kāi)始位置的hell ??
- ???????? //?stripEnd???-->?去除結(jié)尾位置的orld ??
- ????????StringUtils.strip(str,? "aa" );??
- ????????StringUtils.stripStart(str,? "hell" );??
- ????????StringUtils.stripEnd(str,? "orld" );??
- ??
- ??
- ???????? //?返回字符串在第三次出現(xiàn)A的位置 ??
- ????????StringUtils.ordinalIndexOf(str,? "A" ,? 3 );??
- ??
- ??
- ???????? //?獲取str?開(kāi)始為hello結(jié)尾為orld中間的字符串 ??
- ???????? //?注意此方法返回字符串??????-->substringBetween ??
- ???????? //?注意此方法返回字符串?dāng)?shù)組(多了個(gè)s)?-->?substringsBetween ??
- ????????StringUtils.substringBetween(str,? "hell" ,? "orld" );??
- ????????StringUtils.substringsBetween(str,? "hell" ,? "orld" );??
- ??
- ??
- ???????? //?重復(fù)字符串,第二種重載形式為在重復(fù)中用hahah拼接 ??
- ????????StringUtils.repeat(str,? 3 );??
- ????????StringUtils.repeat(str,? "hahah" ,? 2 );??
- ??
- ??
- ???????? //?統(tǒng)計(jì)參數(shù)2在字符串中出現(xiàn)的次數(shù) ??
- ????????StringUtils.countMatches(str,? "l" );??
- ??
- ??
- ???????? //?判斷字符串是否全小寫(xiě)或大寫(xiě) ??
- ????????StringUtils.isAllLowerCase(str);??
- ????????StringUtils.isAllUpperCase(str);??
- ??
- ??
- ???????? //?isAlpha????????-->?全部由字母組成返回true ??
- ???????? //?isNumeric??????-->全部由數(shù)字組成返回true ??
- ???????? //?isAlphanumeric?-->全部由字母或數(shù)字組成返回true ??
- ???????? //?isAlphaSpace???-->全部由字母或空格組成返回true ??
- ???????? //?isWhitespace???-->全部由空格組成返回true ??
- ????????StringUtils.isAlpha(str);??
- ????????StringUtils.isNumeric(str);??
- ????????StringUtils.isAlphanumeric(str);??
- ????????StringUtils.isAlphaSpace(str);??
- ????????StringUtils.isWhitespace(str);??
- ??
- ??
- ???????? //?縮進(jìn)字符串,第二參數(shù)最低為?4,要包含... ??
- ???????? //?現(xiàn)在Hello?World輸出為H... ??
- ????????StringUtils.abbreviate(str,? 4 );??
- ??
- ??
- ???????? //?首字母大寫(xiě)或小寫(xiě) ??
- ????????StringUtils.capitalize(str);??
- ????????StringUtils.uncapitalize(str);??
- ??
- ??
- ???????? //?將字符串?dāng)?shù)組轉(zhuǎn)變?yōu)橐粋€(gè)字符串,通過(guò)","拼接,支持傳入iterator和collection ??
- ????????StringUtils.join( new ?String[]?{? "Hello" ,? "World" ?},? "," );??
- ??
- ??
- ??
- ???????? /* ?
- ?????????*?經(jīng)常性要把后臺(tái)的字符串傳遞到前提作為html代碼進(jìn)行解釋, ?
- ?????????*?可以使用以下方法進(jìn)行轉(zhuǎn)換,以下方法輸出為 ?
- ?????????*?<p>Hello</p> ?
- ?????????*/ ??
- ????????StringEscapeUtils.escapeHtml("Hello??
- ");??
- ????}??
- }??
????? DateUtils and DateFormatUtils
?
- public ? class ?TestMain?{??
- ???? public ? static ? void ?main(String[]?args)? throws ?IllegalAccessException?{??
- ????????Date?day1?=? new ?Date();??
- ???????? /* ?
- ?????????*?由于Aache的DateUtils和DateFormatUtils并沒(méi)有Joda強(qiáng)大, ?
- ?????????*??所以在這里只作簡(jiǎn)單的示例 ?
- ?????????*/ ??
- ??????????
- ???????? //?增加一天 ??
- ????????DateUtils.addDays(day1,? 1 );??
- ???????? //?減少一年 ??
- ????????DateUtils.addYears(day1,?- 1 );??
- ??
- ???????? //?格式化時(shí)間,第三參數(shù)為國(guó)際化,表示按美國(guó)時(shí)間顯示 ??
- ????????DateFormatUtils.format(day1,? "yyyy-MM-dd" ,?Locale.UK);??
- ??
- ????}??
- }??
- public ? class ?TestMain?{??
- ???? public ? static ? void ?main(String[]?args)? throws ?IllegalAccessException?{??
- ????????Date?day1?=? new ?Date();??
- ???????? /* ?
- ?????????*?由于Aache的DateUtils和DateFormatUtils并沒(méi)有Joda強(qiáng)大, ?
- ?????????*??所以在這里只作簡(jiǎn)單的示例 ?
- ?????????*/ ??
- ??????????
- ???????? //?增加一天 ??
- ????????DateUtils.addDays(day1,? 1 );??
- ???????? //?減少一年 ??
- ????????DateUtils.addYears(day1,?- 1 );??
- ??
- ???????? //?格式化時(shí)間,第三參數(shù)為國(guó)際化,表示按美國(guó)時(shí)間顯示 ??
- ????????DateFormatUtils.format(day1,? "yyyy-MM-dd" ,?Locale.UK);??
- ??
- ????}??
- }??
總結(jié):
?
????? commons工具包很多開(kāi)源組織都有提供,例如google,spring,apache都有各自的工具包,有眾多的選擇,但最終的目的只是為了方便我們程序的開(kāi)發(fā)和維護(hù),簡(jiǎn)化我們編寫(xiě)一些常用的邏輯,提升我們開(kāi)發(fā)的效率,從而達(dá)到活在開(kāi)源,善用開(kāi)源
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
