番石榴的弦類

在“ 檢查Java中的空,空或僅空白字符串”一文中 ,我演示了Java生態系統(標準Java, Guava , Apache Commons Lang和Groovy )中用于檢查字符串是否為空,空或空白的常見方法。僅類似于C#通過String.IsNullOrWhiteSpace方法支持的內容。 我展示的方法之一是基于Guava的方法,該方法利用了Guava類的Strings及其靜態isNullOrEmpty(String)方法。 在本文中,我將介紹捆綁在Strings類中的Guava的六個“與String有關的靜態實用程序方法”所提供的其他有用的功能,以使用String。

使用Guava的Strings類非常簡單,因為它的命名方法很好。 以下列表枚舉了Strings類上的方法(所有靜態方法),并在方法名稱旁邊簡要說明了每個方法的作用(這些描述是從Javadoc文檔中借用或改編而成的)。

  • Strings.isNullOrEmpty(String)
    • “如果給定的字符串為null或為空字符串,則返回true。”
  • emptyToNull(String)
    • '如果給定的字符串非空,則返回它;
  • nullToEmpty(String)
    • '如果給定的字符串非空,則返回它;
  • padStart(String,int,char)
    • 在提供的String 前面添加,如有必要,提供足夠的char字符以使字符串達到指定的長度。
  • padEnd(String,int,char)
    • 附加到提供的String上(如果需要),提供足夠的char字符使字符串達到指定的長度。
  • 重復(String,int)
    • “返回由輸入字符串的特定數量的串聯副本組成的字符串。”


isNullOrEmpty

番石榴的Strings.isEmptyOrNull(字符串)方法可以方便地構建簡單和高度可讀的條件語句檢查String作用在說之前空或空String 。 如前所述,我之前已經簡要介紹了此方法 。 接下來顯示此方法的另一個代碼演示。

使用Strings.isNullOrEmpty(String)的代碼示例

/*** Print to standard output a string message indicating whether the provided* String is null or empty or not null or empty. This method uses Guava's* Strings.isNullOrEmpty(String) method.* * @param string String to be tested for null or empty.*/private static void printStringStatusNullOrEmpty(final String string){out.println(  'String '' + string + '' '+ (Strings.isNullOrEmpty(string) ? 'IS' : 'is NOT')+ ' null or empty.');}/*** Demonstrate Guava Strings.isNullOrEmpty(String) method on some example* Strings.*/public static void demoIsNullOrEmpty(){printHeader('Strings.isNullOrEmpty(String)');printStringStatusNullOrEmpty('Dustin');printStringStatusNullOrEmpty(null);printStringStatusNullOrEmpty('');}

運行以上代碼的輸出包含在下一個屏幕快照中。 它顯示了將null或空String(“)傳遞給Strings.isNullOrEmpty(String)時返回true。

nullToEmpty和emptyToNull

很多時候,您可能希望將空字符串視為空字符串,或者在存在空字符串時希望呈現空值。 在此類情況下,當需要在null和空String之間進行轉換時,以下代碼段演示了Strings.nullToEmpty(String)和Strings.emptyToNull(String)的使用 。

nullToEmpty和emptyToNull

/*** Print to standard output a simple message indicating the provided original* String and the provided result/output String.* * @param originalString Original String.* @param resultString Output or result String created by operation.* @param operation The operation that acted upon the originalString to create*    the resultString.*/private static void printOriginalAndResultStrings(final String originalString, final String resultString, final String operation){out.println('Passing '' + originalString + '' to ' + operation + ' produces '' + resultString + ''');}/** Demonstrate Guava Strings.emptyToNull() method on example Strings. */public static void demoEmptyToNull(){final String operation = 'Strings.emptyToNull(String)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.emptyToNull('Dustin'), operation);printOriginalAndResultStrings(null, Strings.emptyToNull(null), operation);printOriginalAndResultStrings('', Strings.emptyToNull(''), operation);}/** Demonstrate Guava Strings.nullToEmpty() method on example Strings. */public static void demoNullToEmpty(){final String operation = 'Strings.nullToEmpty(String)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.nullToEmpty('Dustin'), operation);printOriginalAndResultStrings(null, Strings.nullToEmpty(null), operation);printOriginalAndResultStrings('', Strings.nullToEmpty(''), operation);}

運行以上代碼的輸出(顯示在下一個屏幕快照中)證明了這些方法可以按預期工作:將null轉換為空String或將空String轉換為null。

padStart和padEnd

使用Java(或任何其他語言)處理String時,另一種常見做法是使用指定字符將String填充到特定長度。 Guava通過其Strings.padStart(String,int,char)和Strings.padEnd(String,int,char)方法輕松支持此功能,如以下代碼清單所示。

padStart和padEnd

/*** Demonstrate Guava Strings.padStart(String,int,char) method on example* Strings.*/public static void demoPadStart(){final String operation = 'Strings.padStart(String,int,char)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.padStart('Dustin', 10, '_'), operation);/** *  Do NOT call Strings.padStart(String,int,char) on a null String:*  Exception in thread 'main' java.lang.NullPointerException*         at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:187)*         at com.google.common.base.Strings.padStart(Strings.java:97)*///printOriginalAndResultStrings(null, Strings.padStart(null, 10, '_'), operation);printOriginalAndResultStrings('', Strings.padStart('', 10, '_'), operation);      }/*** Demonstrate Guava Strings.padEnd(String,int,char) method on example* Strings.*/public static void demoPadEnd(){final String operation = 'Strings.padEnd(String,int,char)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.padEnd('Dustin', 10, '_'), operation);/*** Do NOT call Strings.padEnd(String,int,char) on a null String:*    Exception in thread 'main' java.lang.NullPointerException*         at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:187)*         at com.google.common.base.Strings.padEnd(Strings.java:129)*///printOriginalAndResultStrings(null, Strings.padEnd(null, 10, '_'), operation);printOriginalAndResultStrings('', Strings.padEnd('', 10, '_'), operation);       }

執行時,以上代碼根據所調用的方法在提供的String之前或之后用下劃線字符填充提供的String。 在這兩種情況下,字符串的長度都指定為十。 此輸出顯示在下一個屏幕快照中。

重復

Guava的Strings類支持的最后一種處理技術是能夠輕松地將給定String重復指定次數的功能。 下一個代碼清單和帶有該代碼輸出的相應屏幕快照中對此進行了演示。 在此示例中,提供的String重復了三次。

重復

/** Demonstrate Guava Strings.repeat(String,int) method on example Strings. */public static void demoRepeat(){final String operation = 'Strings.repeat(String,int)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.repeat('Dustin', 3), operation);/*** Do NOT call Strings.repeat(String,int) on a null String:*    Exception in thread 'main' java.lang.NullPointerException*         at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:187)*         at com.google.common.base.Strings.repeat(Strings.java:153)*///printOriginalAndResultStrings(null, Strings.repeat(null, 3), operation);printOriginalAndResultStrings('', Strings.repeat('', 3), operation);}

包起來

上面的示例很簡單,因為Guava的Strings類易于使用。 現在列出了包含前面顯示的演示代碼的完整類。

GuavaStrings.java

package dustin.examples;import com.google.common.base.Strings;
import static java.lang.System.out;/*** Simple demonstration of Guava's Strings class.* * @author Dustin*/
public class GuavaStrings
{/*** Print to standard output a string message indicating whether the provided* String is null or empty or not null or empty. This method uses Guava's* Strings.isNullOrEmpty(String) method.* * @param string String to be tested for null or empty.*/private static void printStringStatusNullOrEmpty(final String string){out.println(  'String '' + string + '' '+ (Strings.isNullOrEmpty(string) ? 'IS' : 'is NOT')+ ' null or empty.');}/*** Demonstrate Guava Strings.isNullOrEmpty(String) method on some example* Strings.*/public static void demoIsNullOrEmpty(){printHeader('Strings.isNullOrEmpty(String)');printStringStatusNullOrEmpty('Dustin');printStringStatusNullOrEmpty(null);printStringStatusNullOrEmpty('');}/*** Print to standard output a simple message indicating the provided original* String and the provided result/output String.* * @param originalString Original String.* @param resultString Output or result String created by operation.* @param operation The operation that acted upon the originalString to create*    the resultString.*/private static void printOriginalAndResultStrings(final String originalString, final String resultString, final String operation){out.println('Passing '' + originalString + '' to ' + operation + ' produces '' + resultString + ''');}/** Demonstrate Guava Strings.emptyToNull() method on example Strings. */public static void demoEmptyToNull(){final String operation = 'Strings.emptyToNull(String)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.emptyToNull('Dustin'), operation);printOriginalAndResultStrings(null, Strings.emptyToNull(null), operation);printOriginalAndResultStrings('', Strings.emptyToNull(''), operation);}/** Demonstrate Guava Strings.nullToEmpty() method on example Strings. */public static void demoNullToEmpty(){final String operation = 'Strings.nullToEmpty(String)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.nullToEmpty('Dustin'), operation);printOriginalAndResultStrings(null, Strings.nullToEmpty(null), operation);printOriginalAndResultStrings('', Strings.nullToEmpty(''), operation);}/*** Demonstrate Guava Strings.padStart(String,int,char) method on example* Strings.*/public static void demoPadStart(){final String operation = 'Strings.padStart(String,int,char)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.padStart('Dustin', 10, '_'), operation);/** * Do NOT call Strings.padStart(String,int,char) on a null String:* Exception in thread 'main' java.lang.NullPointerException*    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:187)*    at com.google.common.base.Strings.padStart(Strings.java:97)*///printOriginalAndResultStrings(null, Strings.padStart(null, 10, '_'), operation);printOriginalAndResultStrings('', Strings.padStart('', 10, '_'), operation);      }/*** Demonstrate Guava Strings.padEnd(String,int,char) method on example* Strings.*/public static void demoPadEnd(){final String operation = 'Strings.padEnd(String,int,char)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.padEnd('Dustin', 10, '_'), operation);/*** Do NOT call Strings.padEnd(String,int,char) on a null String:*    Exception in thread 'main' java.lang.NullPointerException*       at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:187)*       at com.google.common.base.Strings.padEnd(Strings.java:129)*///printOriginalAndResultStrings(null, Strings.padEnd(null, 10, '_'), operation);printOriginalAndResultStrings('', Strings.padEnd('', 10, '_'), operation);       }/** Demonstrate Guava Strings.repeat(String,int) method on example Strings. */public static void demoRepeat(){final String operation = 'Strings.repeat(String,int)';printHeader(operation);printOriginalAndResultStrings('Dustin', Strings.repeat('Dustin', 3), operation);/*** Do NOT call Strings.repeat(String,int) on a null String:*    Exception in thread 'main' java.lang.NullPointerException*       at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:187)*       at com.google.common.base.Strings.repeat(Strings.java:153)*///printOriginalAndResultStrings(null, Strings.repeat(null, 3), operation);printOriginalAndResultStrings('', Strings.repeat('', 3), operation);}/*** Print a separation header to standard output.* * @param headerText Text to be placed in separation header.*/public static void printHeader(final String headerText){out.println('\n=========================================================');out.println('= ' + headerText);out.println('=========================================================');}/*** Main function for demonstrating Guava's Strings class.* * @param arguments Command-line arguments: none anticipated.*/public static void main(final String[] arguments){demoIsNullOrEmpty();demoEmptyToNull();demoNullToEmpty();demoPadStart();demoPadEnd();demoRepeat();}
}

填充和重復字符串的方法并不善于傳遞給它們的空字符串。 實際上,向這三個方法傳遞null都會引發NullPointerException 。 有趣的是,這些是Guava在其自己的代碼中使用Preconditions類的更多示例。

結論

許多Java庫和框架都提供String操作功能,這些功能的名稱類似于StringUtil 。 Guava的Strings類就是這樣的一個例子,它提供的方法可以使Java對String的操作更加輕松和簡潔。 確實,當我使用Guava的Strings方法時,我感覺幾乎就像在使用Groovy的GDK String優點 。

參考:來自JCG合作伙伴 Dustin Marx的Guava的Strings類,來自Inspired by Actual Events博客。

翻譯自: https://www.javacodegeeks.com/2012/11/guavas-strings-class.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370740.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370740.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370740.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用python做數據分析流程圖_使用Pyecharts進行高級數據可視化

歡迎使用Markdown編輯器經管之家:Do the best economic and management education!你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,了解一下Markdown的基本語…

Hadoop集群的配置(二)

轉自:http://www.cnblogs.com/baiboy/p/4640640.html 摘要: hadoop集群配置系列文檔,是筆者在實驗室真機環境實驗后整理而得。以便隨后工作所需,做以知識整理,另則與博客園朋友分享實驗成果,因為筆者在學習初期&#x…

允許使用抽象類類型 isearchboxinfo 的對象_Java學習5-設計模式+抽象類/方法

1.設計模式設計模式:一套被反復使用、多數人知曉的,經過分類編目的、代碼設計經驗的總結,是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。項目中合理的運用設計模式可以完美的解決很多問題; 每種模式在現實中都有相應的…

初始Windows程序

1.屬性 窗體標題 Name 窗體的圖標 Icon 背景圖片 BackgroundImage 背景顏色 BackColor 最大化按鈕 MaxIMonBox 最小化按鈕 Minimun 窗體邊框樣式 FormBorderStyle 窗體初始位置 StartPosition 窗體狀態 WindowsState 背景圖片拉伸 BackgroundImageLayout 窗體標題 Te…

計算機病毒是以獨立的文件形式存在的對嗎,計算機病毒以什么形式存在?

自從2113世紀出現第一種病毒以來,對于世界上共有5261種病毒的疾病數量有不同的看法. 無論有1,653種,病毒的數量仍在增加. 根據國外統計,計算機病毒以每周10種的速度增長. 根據我國部的統計,中國計算機病毒以每月4種的速度增長. 有…

HTML基礎實例

本節列舉了一些簡單的HTML例子&#xff0c;幫助大家更感性地認識HTML標簽。是不是對一些標簽還不熟悉&#xff1f;別擔心&#xff0c;后面幾個章節會有詳細說明&#xff0c;先跑幾個例子看看效果吧。 HTML文檔相關標簽所有HTML文檔必須以<!DOCTYPE html>聲明開頭。 HTM…

簽署Java代碼

在上一篇文章中&#xff0c;我們討論了如何保護移動代碼 。 提到的措施之一是簽名代碼。 這篇文章探討了Java程序如何工作。 數字簽名 數字簽名的基礎是密碼學 &#xff0c;特別是公鑰密碼學 。 我們使用一組加密密鑰&#xff1a;私有密鑰和公共密鑰。 私鑰用于簽名文件&am…

蜘蛛搜索引擎_SEO:搜索引擎蜘蛛要引導,不能佛系優化

又是一個不眠的夜晚&#xff0c;工作對生活節奏不斷地敲打&#xff0c;我們新一代的年輕小伙不得不進步&#xff0c;滿懷熱情來挑戰我們對于工作的激情&#xff0c;雖然每一天工作都是重復地進行&#xff0c;但是每一天都有我們留下的痕跡&#xff0c;為世界的美好增添一道絢麗…

SQL數據庫排序規則修改

修改SQL數據庫排序規則: 1.修改為單用戶模式 2.然后關閉所有的查詢窗口&#xff0c;修改Options的Collocation屬性&#xff0c;如&#xff1a;Chinese_PRC_90_CI_AS 3.再修改為多用戶模式 例如&#xff1a; ALTER DATABASE SRMain SET SINGLE_USER WITH ROLLBACK IMMEDIATE Go…

屬于計算機病毒主要特征的是,[單選] 不屬于計算機病毒的主要特征的是()

[單選] 不屬于計算機病毒的主要特征的是()更多相關問題已知兩直線l1&#xff1a;mx&#xff0b;y&#xff0d;20和l2&#xff1a;(m&#xff0b;2)x&#xff0b;y&#xff0b;40與兩坐標軸圍成的四邊形有外接圓&#xff0c;則實數m的值為()A&#xff0e;1B&#xff0e;&#xf…

小程序滴滴車主板塊的銀行卡管理左滑刪除編輯

最近在類似于滴滴軟件的一款小程序&#xff0c;工程確實有點大&#xff0c;很多東西都是第一次做。這次記錄一下關于左滑刪除的一個代碼記錄。主要的思想就是計算滑動距離的大小來使用css中的 transition 控制滑動的效果&#xff0c;主流的都是控制邊距margin來達到左滑的效果。…

華菱重卡儀表指示說明_儀表裝置11種常見故障的解決方法

1. 轉速表工作不正常或停止工作首先檢查轉速表背面的黑色3孔插頭與插座接觸是否良好及電壓正常與否。3個端子的連接情況&#xff1a;端子a是電源負極&#xff0c;與儀表盤14孔白色插座上的棕色導線連接后搭鐵(儀表盤上所有搭鐵點均由棕色導線匯集在一起&#xff0c;并通過膠布包…

WADL中的JSON模式

在其他工作之間&#xff0c;我最近一直在審查WADL規范&#xff0c;以解決一些文檔問題&#xff0c;以生成更新版本。 因為顯而易見的一件事是缺少對XML以外的語言的語法支持-是的&#xff0c;您可以使用JSON <-> XML Schema的映射&#xff0c;但這對于JSON純粹主義者而言…

怎么用python自制計算公式_如何使用Python和Numpy計算r平方?

我最初發布下面的基準是為了推薦numpy.corrcoef&#xff0c;愚蠢地沒有意識到原來的問題已經使用了corrcoef&#xff0c;實際上是在詢問高階多項式擬合。我已經使用statsmodels為多項式r-squared問題添加了一個實際的解決方案&#xff0c;并且我已經離開了原始的基準測試&#…

ASP .NET SVN emmet 插件

學習 ASP .NET 時間的第三周&#xff1a; 來講講如何在 visual studio 2013...上搭載 SVN吧: 廢話不多說&#xff1a; One Step&#xff1a; 電腦上已安裝 visual studio 2013 等版本&#xff08;未安裝時 紅色區域是不存在的&#xff09; Two Step&#xff1a; 從官網上下載對…

Python之路3【知識點】白話Python編碼和文件操作(截載)

無意發現這篇文章講的比較好&#xff0c;存下來供參考&#xff1a; http://www.cnblogs.com/luotianshuai/p/5735051.html轉載于:https://www.cnblogs.com/shikaihong/p/7778880.html

Http協議入門

[在此處輸入文章標題] 1 web web入門 1&#xff09;web服務軟件作用: 把本地資源共享給外部訪問 2&#xff09;tomcat服務器基本操作 &#xff1a; 啟動: %tomcat%/bin/startup.bat 關閉&#xff1a; %tomcat%/bin/shutdown.bat 訪問tomcat主頁&#xff1a; http://loca…

計算機硬件系統都是看得見的,計算機組成硬件系統).doc

計算機組成硬件系統)各位計算機協會的成員大家好&#xff0c;很高興大家能陪我們走過這段難忘的時光。為了讓大家更好的學到東西&#xff0c;我們特地將計算機方面的東西整理成技術文檔&#xff0c;共大家使用&#xff0c;祝大家學得愉快&#xff01;湘信院計算機協會一&#x…

Google Guava –期貨

這篇文章是我在Google Guava上的系列文章的延續&#xff0c;這次涵蓋了Future。 Futures類是用于使用Future / ListenableFuture接口的靜態實用程序方法的集合。 Future是提交給ExecutorService的異步任務&#xff08;可運行或可調用&#xff09;的句柄。 Future界面提供以下方…

iptables 配置后連接不上數據庫_Linux服務器配置-VSFTP服務配置(三)

上文&#xff1a;Linux服務器配置-VSFTP服務配置(二)一、vsftpd服務防火墻配置1、主動(POST)模式 FTP 防火墻配置CentOS6 系統 iptables 的配置iptables -t filter --line-number -nL INPUT#顯示現有防火墻規則&#xff0c;查看是否開啟20、21號端口。iptables -t filter -I IN…