番石榴的弦类

在“ 检查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.设计模式设计模式:一套被反复使用、多数人知晓的,经过分类编目的、代码设计经验的总结,是软件开发人员在软件开发过程中面临的一般问题的解决方案。项目中合理的运用设计模式可以完美的解决很多问题; 每种模式在现实中都有相应的…

计算机病毒是以独立的文件形式存在的对吗,计算机病毒以什么形式存在?

自从2113世纪出现第一种病毒以来,对于世界上共有5261种病毒的疾病数量有不同的看法. 无论有1,653种,病毒的数量仍在增加. 根据国外统计,计算机病毒以每周10种的速度增长. 根据我国部的统计,中国计算机病毒以每月4种的速度增长. 有…

签署Java代码

在上一篇文章中,我们讨论了如何保护移动代码 。 提到的措施之一是签名代码。 这篇文章探讨了Java程序如何工作。 数字签名 数字签名的基础是密码学 ,特别是公钥密码学 。 我们使用一组加密密钥:私有密钥和公共密钥。 私钥用于签名文件&am…

蜘蛛搜索引擎_SEO:搜索引擎蜘蛛要引导,不能佛系优化

又是一个不眠的夜晚,工作对生活节奏不断地敲打,我们新一代的年轻小伙不得不进步,满怀热情来挑战我们对于工作的激情,虽然每一天工作都是重复地进行,但是每一天都有我们留下的痕迹,为世界的美好增添一道绚丽…

小程序滴滴车主板块的银行卡管理左滑删除编辑

最近在类似于滴滴软件的一款小程序,工程确实有点大,很多东西都是第一次做。这次记录一下关于左滑删除的一个代码记录。主要的思想就是计算滑动距离的大小来使用css中的 transition 控制滑动的效果,主流的都是控制边距margin来达到左滑的效果。…

华菱重卡仪表指示说明_仪表装置11种常见故障的解决方法

1. 转速表工作不正常或停止工作首先检查转速表背面的黑色3孔插头与插座接触是否良好及电压正常与否。3个端子的连接情况:端子a是电源负极,与仪表盘14孔白色插座上的棕色导线连接后搭铁(仪表盘上所有搭铁点均由棕色导线汇集在一起,并通过胶布包…

ASP .NET SVN emmet 插件

学习 ASP .NET 时间的第三周: 来讲讲如何在 visual studio 2013...上搭载 SVN吧: 废话不多说: One Step: 电脑上已安装 visual studio 2013 等版本(未安装时 红色区域是不存在的) Two Step: 从官网上下载对…

iptables 配置后连接不上数据库_Linux服务器配置-VSFTP服务配置(三)

上文:Linux服务器配置-VSFTP服务配置(二)一、vsftpd服务防火墙配置1、主动(POST)模式 FTP 防火墙配置CentOS6 系统 iptables 的配置iptables -t filter --line-number -nL INPUT#显示现有防火墙规则,查看是否开启20、21号端口。iptables -t filter -I IN…

下标索引必须为正整数类型或逻辑类型_Python3 基本数据类型

Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。Python 3中有六个标准的数据类型&#xf…

noip模拟赛 写代码

分析:这其实就是括号匹配题,一眼贪心题,不过一开始贪错了,以为([)]是合法的......其实括号之间不能嵌套. 一开始的想法是尽量往左边填左括号,因为每种括号的数量都确定了,那么左括号和右括号的数量也就确定…

行内元素和块元素以及行内块元素的特点

一、背景 初学html&#xff0c;接触很多标签 <h1>、<p>、<span>、<ul>、<em>等&#xff0c;当写出简单的小页面的时候&#xff0c;例如仅仅是一篇带有标题的文章&#xff0c;标题 <h1>标签单独一行&#xff0c;不管后面有多大的空间&…

软件测试的功能测试和性能测试,大型软件的功能测试流程及性能测试流程

大型软件具有涉及子模块繁多、建设过程复杂、功能全面、性能具有较高要求的特点。依据ISO/IEC 9126软件产品评估标准&#xff0c;需要对软件的功能性、可靠性、可用性、效率、可维护性、可移植性等方面进行评估。因此&#xff0c;需要有一种方法能够对大型软件进行测试&#xf…

vue 分模块打包 脚手架_Vue面试官最爱的底层源码问题,你可以这样回答!

最近看到身边很多人都在投简历&#xff0c;有因为企业裁员的&#xff0c;有因为自己想跳槽的&#xff0c;原因不一&#xff0c;但是最终大家都会需要接触到面试这个事情。但是很多人对待面试不够认真&#xff0c;只会等待结果&#xff0c;不去努力。所以这边想整理一些懒人面试…

re.containerbase.startinternal 子容器启动失败_Python项目容器化实践(二) Docker Machine和Docker Swarm...

前言这篇文章介绍Docker生态中的常被提到的Engine、Machine和Swarm&#xff0c;大家以了解为主&#xff0c;工作需要再深入。EngineDocker Engine其实就是我们常说的「Docker」&#xff0c;它是一个C/S模型(Client/Server)的应用&#xff0c;包含如下组件:Daemon。守护进程&…

基于设备树的TQ2440的中断(2)

下面以按键中断为例看看基于设备数的中断的用法&#xff1a; 设备树&#xff1a; tq2440_key {compatible "tq2440,key";interrupt-parent <&gpf>;interrupts <0 IRQ_TYPE_EDGE_FALLING>, <1 IRQ_TYPE_EDGE_FALLING>;key_3 <&gpf 2…

计算机里有个不能进入的磁盘分区,新电脑只有一个分区怎么办? 教你们如何不进pe给硬盘创建新分区!...

很多朋友新电脑刚买回来打开发现明明自己机械硬盘1T或者1T机械加128G固态&#xff0c;但是却只有一个或者两个分区&#xff0c;但是又不会分区现在教大家如何不用老毛桃大白菜之类的进pe系统里面就能直接创建新分区1 WinR输入diskmgmt.msc2进入磁盘管理可以查看本机的C盘与E盘的…

OSGi中的权限

在上一篇文章中 &#xff0c;我们介绍了为Java应用程序实现沙箱的方法&#xff0c;在其中我们可以安全地运行移动代码 。 这篇文章探讨了如何在OSGi环境中执行相同的操作。 OSGi OSGi规范 为Java定义了一个动态模块系统 。 因此&#xff0c;它是实施那种可以使您的应用程序动…

HTTP简单教程

目录 HTTP简介 HTTP工作原理 HTTP消息结构 客户端请求消息服务器响应消息实例 HTTP请求方法HTTP响应头信息HTTP状态码 HTTP状态码分类HTTP状态码列表 HTTP content-type对照表 HTTP简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写&…