分析Java中的StringHelper类

目录

  • 前言
  • 1. 概念
  • 2. 功能示例
  • 3. Demo示例

前言

在项目中实战学习并记录可用的工具类

1. 概念

Java标准库(java.lang包)并没有提供名为StringHelper的类。通常,类似的字符串处理工具类并不是Java标准库的一部分,而是由程序员自行编写或者使用第三方库提供的工具类。

2. 功能示例

功能作用示例
join(Object[] array, String separator)将数组中的元素用指定的分隔符连接成一个字符串。join(new String[]{“a”, “b”, “c”}, “-”) 返回 “a-b-c”。
join(Iterable<?> iterable, String separator)将可迭代对象中的元素用指定的分隔符连接成一个字符串。join(Arrays.asList(“a”, “b”, “c”), “-”) 返回 “a-b-c”。
decapitalize(String string)将字符串的首字母转换为小写,除非字符串以多个大写字母开头示例: decapitalize(“Hello”) 返回 “hello”。
isNullOrEmptyString(String value)检查字符串是否为null或仅包含空格isNullOrEmptyString(" ") 返回 true。
toShortString(Member member)创建成员对象的紧凑字符串表示形式,用于调试或toString()方法。toShortString(someMethod) 返回方法的紧凑字符串表示。
toShortString(Type type)创建类型对象的紧凑字符串表示形式,用于调试或toString()方法toShortString(String.class) 返回 “java.lang.String”。

其他辅助方法:包括一些私有辅助方法,如startsWithSeveralUpperCaseLetters等。

实际上是一个自定义的StringHelper工具类,包含了一系列用于字符串操作的静态方法。

3. Demo示例

以下是该类中主要方法的作用和功能:

public class StringHelper {private static final Pattern DOT = Pattern.compile( "\\." );private StringHelper() {}/*** Joins the elements of the given array to a string, separated by the given separator string.** @param array the array to join* @param separator the separator string** @return a string made up of the string representations of the given array's members, separated by the given separator*         string*/public static String join(Object[] array, String separator) {return array != null ? join( Arrays.asList( array ), separator ) : null;}/*** Joins the elements of the given iterable to a string, separated by the given separator string.** @param iterable the iterable to join* @param separator the separator string** @return a string made up of the string representations of the given iterable members, separated by the given separator*         string*/public static String join(Iterable<?> iterable, String separator) {if ( iterable == null ) {return null;}StringBuilder sb = new StringBuilder();boolean isFirst = true;for ( Object object : iterable ) {if ( !isFirst ) {sb.append( separator );}else {isFirst = false;}sb.append( object );}return sb.toString();}/*** Returns the given string, with its first letter changed to lower-case unless the string starts with more than* one upper-case letter, in which case the string will be returned unaltered.* <p>* Provided to avoid a dependency on the {@link java.beans.Introspector} API which is not available on the Android* platform (HV-779).** @param string the string to decapitalize** @return the given string, decapitalized. {@code null} is returned if {@code null} is passed as input; An empty*         string is returned if an empty string is passed as input** @see java.beans.Introspector#decapitalize(String)*/public static String decapitalize(String string) {if ( string == null || string.isEmpty() || startsWithSeveralUpperCaseLetters( string ) ) {return string;}else {return string.substring( 0, 1 ).toLowerCase( Locale.ROOT ) + string.substring( 1 );}}/*** Indicates if the string is null or is empty ie only contains whitespaces.** @param value the string considered* @return true if the string is null or only contains whitespaces*/public static boolean isNullOrEmptyString(String value) {return value == null || value.trim().isEmpty();}/*** Creates a compact string representation of the given member, useful for debugging or toString() methods. Package* names are shortened, e.g. "org.hibernate.validator.internal.engine" becomes "o.h.v.i.e". Not to be used for* user-visible log messages.*/public static String toShortString(Member member) {if ( member instanceof Field ) {return toShortString( (Field) member );}else if ( member instanceof Method ) {return toShortString( (Method) member );}else {return member.toString();}}private static String toShortString(Field field) {return toShortString( field.getGenericType() ) + " " + toShortString( field.getDeclaringClass() ) + "#" + field.getName();}private static String toShortString(Method method) {return toShortString( method.getGenericReturnType() ) + " " +method.getName() +Arrays.stream( method.getGenericParameterTypes() ).map( StringHelper::toShortString ).collect( Collectors.joining( ", ", "(", ")" ) );}/*** Creates a compact string representation of the given type, useful for debugging or toString() methods. Package* names are shortened, e.g. "org.hibernate.validator.internal.engine" becomes "o.h.v.i.e". Not to be used for* user-visible log messages.*/public static String toShortString(Type type) {if ( type instanceof Class ) {return toShortString( (Class<?>) type );}else if ( type instanceof ParameterizedType ) {return toShortString( (ParameterizedType) type );}else {return type.toString();}}private static String toShortString(Class<?> type) {if ( type.isArray() ) {return toShortString( type.getComponentType() ) + "[]";}else if ( type.getEnclosingClass() != null ) {return toShortString( type.getEnclosingClass() ) + "$" + type.getSimpleName();}else if ( type.getPackage() == null ) {return type.getName();}return toShortString( type.getPackage() ) + "." + type.getSimpleName();}private static String toShortString(ParameterizedType parameterizedType) {Class<?> rawType = ReflectionHelper.getClassFromType( parameterizedType );if ( rawType.getPackage() == null ) {return parameterizedType.toString();}String typeArgumentsString = Arrays.stream( parameterizedType.getActualTypeArguments() ).map( t -> toShortString( t ) ).collect( Collectors.joining( ", ", "<", ">" ) );return toShortString( rawType ) + typeArgumentsString;}private static String toShortString(Package pakkage) {String[] packageParts = DOT.split( pakkage.getName() );return Arrays.stream( packageParts ).map( n -> n.substring( 0, 1 ) ).collect( Collectors.joining( "." ) );}private static boolean startsWithSeveralUpperCaseLetters(String string) {return string.length() > 1 &&Character.isUpperCase( string.charAt( 0 ) ) &&Character.isUpperCase( string.charAt( 1 ) );}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/594234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python使用隐马尔可夫模型识别波形数据MFCC特征

python使用隐马尔可夫模型识别振动波形数据MFCC特征 1、简介 ​ 隐马尔可夫模型非常擅长对时间序列数据进行建模。 ​ 由于振动波形数据是时间序列信号,HMM能够满足波形分类需求。 ​ 隐马尔可夫模型是表示观察序列的概率分布的模型。假设输出是由隐藏状态生成的。 2、数…

如何在Windows安装Wnmp服务并实现固定地址远程访问

文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 WNMP是Windows系统下的绿色NginxMysqlPHP环境集成套件包&#xff0c;安装完成后即可得到一个Nginx MyS…

58.0/PhotoShop 图层的应用(详细版)

目录 58.1 图层的概念 58.2 图层的控制面板 58.3 图层的基本操作 58.3.1 新建图层 58.3.2 选择图层 58.3.3 复制图层 58.3.4 调整图层的叠加顺序 58.3.5 合并图层 58.4 图层样式 58.4.1 投影 58.4.2 内阴影 58.4.3 外发光样式 58.4.4 内发光样式 58.4.5 斜面和浮雕…

JSONyaml和Properties

注&#xff1a;取自GPT&#xff0c;总是忘记了&#xff0c;那我干脆就写一篇blog YAML&#xff08;YAML Ain’t Markup Language 或 YAML Ain’t a Markup Language&#xff09;和 JSON&#xff08;JavaScript Object Notation&#xff09;是两种不同的数据序列化格式&#xf…

程序员提问的艺术:28.4K Star指南,告别成为办公室讨厌鬼!

Github: https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way 原文&#xff1a;http://www.catb.org/~esr/faqs/smart-questions.html ✅为什么讨厌某些提问者 未自行尝试解决问题&#xff1a; ❌“怎么用Java写一个排序算法&#xff1f;” &#x1f44d;&#…

计算机毕业设计 基于SpringBoot的工作量统计系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

IDEA断点调试

IDEA断点调试 断点调试是一种在程序执行过程中暂停执行并逐步检查代码状态的方法。它允许开发者在程序运行到特定位置时暂停执行&#xff0c;查看变量的值、执行过程和调用栈等信息&#xff0c;从而更好地理解代码的运行情况和解决问题。可以帮助我们查看java底层源代码的执行…

day 57 算法训练|动态规划part17

参考&#xff1a;代码随想录 647. 回文子串 1. dp数组&#xff08;dp table&#xff09;以及下标的含义 是不是能找到一种递归关系&#xff0c;也就是判断一个子字符串&#xff08;字符串的下表范围[i,j]&#xff09;是否回文&#xff0c;依赖于&#xff0c;子字符串&#x…

Amos各版本安装指南

Amos下载链接 https://pan.baidu.com/s/1uyblN8Q-knNKkqQVlNnXTw?pwd0531 1.鼠标右击【Amos28】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 Amos28】。 2.打开解压后的文件夹&#xff0c;鼠标右击【Amos28】选择【以管理员身份运行…

基于SpringBoot的社区物资交易互助平台

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的社区物资交易互助平台,…

AUTOSAR软件架构描述文档,AUTOSAR_EXP_LayeredSoftwareArchitecture

AUTOSAR软件架构描述文档&#xff0c;我们常见的经典的CP架构及OS双核等架构描述 下载链接&#xff1a;https://www.autosar.org/fileadmin/standards/R21-11/CP/AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf

macos下php 5.6 7.0 7.4 8.0 8.3 8.4全版本PHP开发环境安装方法

在macos中如果使用brew 官方默认的core tap 只可以安装官方最新的稳定版PHP, 如果想要安装 php 5.6 或者 php 8.4版本的PHP就需要使用第三方的tap , 这里分享一个比较全面的brew tap shivammathur/php 这个tap里面包含了从php5.6到最新版php8.4的所有可用最新版本PHP, 而且是同…

IDEA设置新建类注释、手动注释详解

文章目录 一、背景二、模板三、设置方法1、新建类注释设置2、手动注释设置 一、背景 每次在一台新电脑安装idea&#xff0c;都需要重新设置idea注释配置&#xff0c;说常用吧&#xff0c;也就新安装时才用&#xff0c;时间久步骤容易忘记&#xff0c;所以用此文章记录一下。 二…

阿里云服务器系统盘高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘测评

阿里云服务器系统盘或数据盘支持多种云盘类型&#xff0c;如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等&#xff0c;阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…

算法训练营Day28

#Java #贪心 开源学习资料 Feeling and experiences&#xff1a; 这周来到了贪心算法&#xff0c;简要概述&#xff1a; 贪心算法是一种在每个步骤中都采取最优解&#xff08;即&#xff0c;在当前看来最好的解&#xff09;的算法设计策略。它通常用于求解优化问题。这种方…

动态静态网页

目录 动态静态网页设计中使用的核心技术&#xff1a; 动态静态网页本质区别&#xff1a; 动态静态网页设计中使用的核心技术&#xff1a; 在动态和静态网页设计中&#xff0c;有一些核心技术是常见的。下面是其中的一些&#xff1a; 动态网页设计中使用的核心技术&#xff1a…

Mysql的基本用法(上)非常详细、快速上手

上篇结束了java基础&#xff0c;本篇主要对Mysql中的一些常用的方法进行了总结&#xff0c;主要对查询方法进行了讲解&#xff0c;包括重要的多表查询用到的内连接和外连接等&#xff0c;以下代码可以直接复制到可视化软件中&#xff0c;方便阅读以及练习&#xff1b; SELECT *…

H5C3练习心得 2024.01.03(文字加载动画效果)--transition,动画渲染,遮罩层

&#xff08;一&#xff09;transition&#xff08;过渡效果&#xff09; 1.详解 通常将css的属性值更改后&#xff0c;浏览器会立即更新新的样式&#xff0c;例如在鼠标悬停在元素上时&#xff0c;通过 :hover 选择器定义的样式会立即应用在元素上。 在 CSS3 中加入了一项过…

VCG 指定Mesh面片颜色

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 由于VCG并没有提供可视化的模块,因此将指定Mesh面片的颜色就对我们后面测试结果很有用处了,VCG为我们提供了一个Mesh颜色属性,我们只需启用它即可进行面片的赋色操作。 二、实现代码 //VCG #include <vcg/co…

C#中使用正则表达式实现汉字转拼音

目录 一、正则表达式基础 二、实例 1.程序入口Form1.cs 2.类库PinYin.cs 三、生成效果 四、实例中的知识点 1.Regex 2.ToCharArray() 3.Regex.IsMatch 方法 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;重载 &#xff08;3&#xff09;IsMatch(Stri…