热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

StringUtils里的isEmpty方法和isBlank方法的区别详解

这篇文章主要介绍了StringUtils里的isEmpty方法和isBlank方法的区别详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

前言

我们常说的字符串为空,其实就是一个没有字符的空数组。比如:

1
String a = "";

a 就可以称为是一个空字符串。由于 String 在 Java 中底层是通过 char 数组去存储字符串的,所以空字符串对应的 char 数组表现形式为 

1
private final char value[] = new char[0];

但实际工作中,我们需要对字符串进行一些校验,比如:是否为 null,是否为空,是否去掉空格、换行符、制表符等也不为空。我们一般都是通过一些框架的工具类去做这些判断,比如:apache 的 commons jar 包。下面就讲述一下常见的两个字符串校验方法以及它们的区别。

isEmpty()

1
2
3
public static boolean isEmpty(String str) {   
  return str == null || str.length() == 0;
}

isBlank()

1
2
3
4
5
public static boolean isBlank(String str) {
    int strLen;
    if (str != null && (strLen = str.length()) != 0) {
      for(int i = 0; i <strlen; ++i)="" {="" 判断字符是否为空格、制表符、tab="" if="" (!character.iswhitespace(str.charat(i)))="" return="" false;="" }="" true;="" else="" <="" pre="">
</strlen;>

结论

通过以上代码对比我们可以看出:

1.isEmpty 没有忽略空格参数,是以是否为空和是否存在为判断依据。

2.isBlank 是在 isEmpty 的基础上进行了为空(字符串都为空格、制表符、tab 的情况)的判断。(一般更为常用)

大家可以看下面的例子去体会一下。

1
2
3
4
5
6
StringUtils.isEmpty("yyy") = false
StringUtils.isEmpty("") = true
StringUtils.isEmpty("  ") = false
  
StringUtils.isBlank("yyy") = false
StringUtils.isBlank("") = true

实例展示

自定义判断方法,实现同样的判断逻辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * 判断对象是否为null,不允许空白串
 *
 * @param object  目标对象类型
 * @return
 */
public static boolean isNull(Object object){
  if (null == object) {
    return true;
  }
  if ((object instanceof String)){
    return "".equals(((String)object).trim());
  }
  return false;
}
 
/**
 * 判断对象是否不为null
 *
 * @param object
 * @return
 */
public static boolean isNotNull(Object object){
  return !isNull(object);
}
1
2
3
4
System.out.println(StringHandler.isNull(null));    //true
System.out.println(StringHandler.isNull(""));     //true
System.out.println(StringHandler.isNull("  "));    //true
System.out.println(StringHandler.isNull("dd"));    //false

通常我们通过HttpServletRequest获取到的参数,需要经过判空处理,转型然后得到我们想要的值,这里可以进行这些操作的简单封装.如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
  /**
 * 从<code>HttpServletRequest</code>中获取<code>String</code>类型的值, 不允许传递空串
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @return
 *               返回需要的值
 */
public static final String getString(HttpServletRequest request,String paramName){
  return getString(request, paramName, false);
}
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>String</code>类型的值
 *
 * 如果传递过来的参数为包含空白字符串的字符,认为为有效值, 否则返回null
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @return
 *               返回需要的值
 */
public static final String getString(HttpServletRequest request,String paramName,boolean isWithSpace) {
  String tmp = request.getParameter(paramName);
  if(isWithSpace){
    //如果允许包含空格,则使用isEmpty判空
    if (!StringUtils.isEmpty(tmp)){
      return tmp;
    }
  }else{
    if(!StringUtils.isBlank(tmp)){
      return tmp;
    }
  }
  return null;
}
 
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Long</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @return
 *               返回需要的值
 */
public static final Long getLong(HttpServletRequest request,String paramName) {
  return getLong(request, paramName, -1L);
}
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Long</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @param defaultValue
 *               默认值
 * @return
 *               返回需要的值
 */
public static final Long getLong(HttpServletRequest request,String paramName,Long defaultValue) {
  String tmp = request.getParameter(paramName);
  if (!StringUtils.isBlank(tmp)){
    try {
      Long value = Long.parseLong(tmp);
      return value;
    } catch (NumberFormatException e) {
      return -1L;
    }
  }
  return defaultValue;
}
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Integer</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @return
 *               返回需要的值
 */
 
public static final Integer getInt(HttpServletRequest request,String paramName) {
  return getInt(request,paramName, -1);
}
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Integer</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @param defaultValue
 *               默认值
 * @return
 *               返回需要的值
 */
public static final Integer getInt(HttpServletRequest request,String paramName, int defaultValue) {
  String tmp = request.getParameter(paramName);
  if (!StringUtils.isBlank(tmp)){
    try {
      Integer value = Integer.parseInt(tmp);
      return value;
    } catch (NumberFormatException e) {
      return -1;
    }
  }
  return defaultValue;
}
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Short</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @return
 *               返回需要的值
 */
 
public static final Short getShort(HttpServletRequest request,String paramName) {
  return getShort(request,paramName, (short)-1);
}
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Short</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @param defaultValue
 *               默认值
 * @return
 *               返回需要的值
 */
public static final Short getShort(HttpServletRequest request,String paramName, short defaultValue) {
  String tmp = request.getParameter(paramName);
  if (!StringUtils.isBlank(tmp)){
    try {
      Short value = Short.parseShort(tmp);
      return value;
    } catch (NumberFormatException e) {
      return (short)-1;
    }
  }
  return defaultValue;
}
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Byte</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @return
 *               返回需要的值
 */
 
public static final Byte getByte(HttpServletRequest request,String paramName) {
  return getByte(request,paramName, (byte)-1);
}
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Byte</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @param defaultValue
 *               默认值
 * @return
 *               返回需要的值
 */
public static final Byte getByte(HttpServletRequest request,String paramName, Byte defaultValue) {
  String tmp = request.getParameter(paramName);
  if (!StringUtils.isBlank(tmp)){
    try {
      Byte value = Byte.parseByte(tmp);
      return value;
    } catch (NumberFormatException e) {
      return (byte)-1;
    }
  }
  return defaultValue;
}
 
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Double</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @return
 *               返回需要的值
 */
public static final Double getDouble(HttpServletRequest request,String paramName) {
  return getDouble(request, paramName,-1D);
}
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Double</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @param defaultValue
 *               默认值
 * @return
 *               返回需要的值
 */
public static final Double getDouble(HttpServletRequest request,String paramName, Double defaultValue) {
  String tmp = request.getParameter(paramName);
  if (!StringUtils.isBlank(tmp)){
    try {
      Double value = Double.parseDouble(tmp);
      return value;
    } catch (NumberFormatException e) {
      return -1D;
    }
  }
  return defaultValue;
}
 
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Float</code>类型的值
 *
 *       
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @return
 *               返回需要的值
 */
public static final Float getFloat(HttpServletRequest request,String paramName) {
  return getFloat(request, paramName,-1F);
}
 
 
/**
 * 从<code>HttpServletRequest</code>中获取<code>Float</code>类型的值
 *
 * @param request
 *               @see HttpServletRequest
 * @param paramName
 *               参数名称
 * @param defaultValue
 *               默认值
 * @return
 *               返回需要的值
 */
public static final Float getFloat(HttpServletRequest request,String paramName, Float defaultValue) {
  String tmp = request.getParameter(paramName);
  if (!StringUtils.isBlank(tmp)){
    try {
      Float value = Float.parseFloat(tmp);
      return value;
    } catch (NumberFormatException e) {
      return -1F;
    }
  }
  return defaultValue;
}

到此这篇关于StringUtils里的isEmpty方法和isBlank方法的区别详解的文章就介绍到这了,更多相关StringUtils isEmpty isBlank 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文探讨了如何在Hive(基于Hadoop)环境中编写类似SQL的语句,以去除字段中的空格。特别是在处理邮政编码等数据时,去除特定位置的空格是常见的需求。 ... [详细]
  • 本文详细介绍了如何在 MySQL 中授予和撤销用户权限。包括创建用户、赋予不同级别的权限(如表级、数据库级、服务器级)、使权限生效、查看用户权限以及撤销权限的方法。此外,还提供了常见错误及其解决方法。 ... [详细]
  • 在尝试更新Microsoft Edge浏览器时遇到“检查更新时出错:无法连接到Internet”的问题。本文将详细介绍可能的原因及解决方案,包括防火墙设置和证书缺失的处理方法。 ... [详细]
  • 本文深入探讨了基于Pairwise和Listwise方法的排序学习,结合PaddlePaddle平台提供的丰富运算组件,详细介绍了如何通过这些方法构建高效、精准的排序模型。文章不仅涵盖了基础理论,还提供了实际应用场景和技术实现细节。 ... [详细]
  • 本文将探讨Java编程语言中对象和类的核心概念,帮助读者更好地理解和应用面向对象编程的思想。通过实际例子和代码演示,我们将揭示如何在Java中定义、创建和使用对象。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • Unity初探:小狐狸横版游戏开发入门
    本文是根据B站UP主的教程整理的笔记,主要介绍Unity的基础操作和素材导入方法。欢迎各位开发者指正交流。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • 本教程详细介绍了如何使用 TensorFlow 2.0 构建和训练多层感知机(MLP)网络,涵盖回归和分类任务。通过具体示例和代码实现,帮助初学者快速掌握 TensorFlow 的核心概念和操作。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
author-avatar
Phoenix-Valefor
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有