番石榴的弦类

在“ 检查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.mzph.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…