466 java string string-comparison
如何检查字符串是否为空且不为空?
public void doStuff(String str)
{
if (str != null && str != "**here I want to check the 'str' is empty or not**")
{
/* handle empty string */
}
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
Col*_*ert 872
那么isEmpty()呢?
if(str != null && !str.isEmpty())
Run Code Online (Sandbox Code Playgroud)
请务必&&按此顺序使用部分,因为如果第一部分&&失败,java将不会继续评估第二部分,从而确保在str.isEmpty()if str为null时不会获得空指针异常.
请注意,它仅在Java SE 1.6之后可用.你必须检查str.length() == 0以前的版本.
要忽略空格:
if(str != null && !str.trim().isEmpty())
Run Code Online (Sandbox Code Playgroud)
(因为Java 11 str.trim().isEmpty()可以减少到str.isBlank()也将测试其他Unicode白色空间)
包含在一个方便的功能:
public static boolean empty( final String s ) {
// Null-safe, short-circuit evaluation.
return s == null || s.trim().isEmpty();
}
Run Code Online (Sandbox Code Playgroud)
变为:
if( !empty( str ) )
Run Code Online (Sandbox Code Playgroud)
Rom*_*las 204
我喜欢使用Apache commons-lang来处理这些事情,尤其是StringUtils实用程序类:
import org.apache.commons.lang.StringUtils;
if (StringUtils.isNotBlank(str)) {
...
}
if (StringUtils.isBlank(str)) {
...
}
Run Code Online (Sandbox Code Playgroud)
phr*_*ead 103
只需在此处添加Android:
import android.text.TextUtils;
if (!TextUtils.isEmpty(str)) {
...
}
Run Code Online (Sandbox Code Playgroud)
Ada*_*ent 49
添加到@BJorn和@SeanPatrickFloyd Guava的方法是:
Strings.nullToEmpty(str).isEmpty();
// or
Strings.isNullOrEmpty(str);
Run Code Online (Sandbox Code Playgroud)
Commons Lang有时候更具可读性,但是我一直在慢慢依赖番石榴加上有时Commons Lang在涉及到时isBlank()(如在什么是空白的情况下)令人困惑.
番石榴版的Commons Lang isBlank将是:
Strings.nullToEmpty(str).trim().isEmpty()
Run Code Online (Sandbox Code Playgroud)
我会说不允许""(空)AND的代码 null是可疑的并且可能有错误,因为它可能无法处理所有不允许null有意义的情况(尽管对于SQL我可以理解为SQL/HQL很奇怪'').
hel*_*ios 33
str != null && str.length() != 0
Run Code Online (Sandbox Code Playgroud)
或者
str != null && !str.equals("")
Run Code Online (Sandbox Code Playgroud)
要么
str != null && !"".equals(str)
Run Code Online (Sandbox Code Playgroud)
注意:第二个检查(第一个和第二个备选方案)假定str不为空.这只是因为第一次检查是这样做的(如果第一次检查是假的,那么Java不会进行第二次检查)!
重要提示:请勿使用==进行字符串相等.==检查指针是否相等,而不是值.两个字符串可以位于不同的内存地址(两个实例)中,但具有相同的值!
Sea*_*oyd 25
我所知道的几乎每个库都定义了一个名为的实用程序类StringUtils,StringUtil或者StringHelper它们通常包含您正在寻找的方法.
我个人最喜欢的是Apache Commons/Lang,在StringUtils类中,你可以得到它们
(第一个检查字符串是空还是空,第二个检查它是否为空,空或仅为空格)
Spring,Wicket和许多其他库中都有类似的实用程序类.如果不使用外部库,则可能需要在自己的项目中引入StringUtils类.
更新:多年过去了,这些天我推荐使用番石榴的Strings.isNullOrEmpty(string)方法.
Jav*_*tar 24
这对我有用:
import com.google.common.base.Strings;
if (!Strings.isNullOrEmpty(myString)) {
return myString;
}
Run Code Online (Sandbox Code Playgroud)
如果给定字符串为null或为空字符串,则返回true.
考虑使用nullToEmpty规范化字符串引用.如果这样做,您可以使用String.isEmpty()而不是此方法,并且您也不需要特殊的空类安全形式的方法,如String.toUpperCase.或者,如果您想要"向另一个方向"规范化,将空字符串转换为null,则可以使用emptyToNull.
cod*_*ict 11
怎么样:
if(str!= null && str.length() != 0 )
Run Code Online (Sandbox Code Playgroud)
l00*_*0tr 10
为了完整起见:如果您已经在使用 Spring 框架,则StringUtils提供以下方法
org.springframework.util.StringUtils.hasLength(String str)
Run Code Online (Sandbox Code Playgroud)
返回:如果字符串不为 null 并且有长度,则返回 true
以及方法
org.springframework.util.StringUtils.hasText(String str)
Run Code Online (Sandbox Code Playgroud)
返回:如果 String 不为 null、长度大于 0 并且不包含空格,则返回 true
java-11 中有一个新方法:String#isBlank
如果字符串为空或仅包含空白代码点,则返回 true,否则返回 false。
jshell> "".isBlank()
$7 ==> true
jshell> " ".isBlank()
$8 ==> true
jshell> " ! ".isBlank()
$9 ==> false
Run Code Online (Sandbox Code Playgroud)
这可以与Optional检查字符串是否为空或空结合使用
boolean isNullOrEmpty = Optional.ofNullable(str).map(String::isBlank).orElse(true);
Run Code Online (Sandbox Code Playgroud)
使用Apache StringUtils的isNotBlank方法
StringUtils.isNotBlank(str)
Run Code Online (Sandbox Code Playgroud)
仅当str不为null且不为空时,它才会返回true.
你应该使用org.apache.commons.lang3.StringUtils.isNotBlank()或org.apache.commons.lang3.StringUtils.isNotEmpty.这两者之间的决定是基于您实际想要检查的内容.
所述isNotBlank()检查该输入参数是:
所述isNotEmpty()检查仅输入参数是
小智 5
如果你不想包括整个图书馆; 只需包含您想要的代码.你必须自己维护它; 但这是一个非常直接的功能.这里是从commons.apache.org复制的
/**
* <p>Checks if a String is whitespace, empty ("") or null.</p>
*
* <pre>
* StringUtils.isBlank(null) = true
* StringUtils.isBlank("") = true
* StringUtils.isBlank(" ") = true
* StringUtils.isBlank("bob") = false
* StringUtils.isBlank(" bob ") = false
* </pre>
*
* @param str the String to check, may be null
* @return <code>true</code> if the String is null, empty or whitespace
* @since 2.0
*/
public static boolean isBlank(String str) {
int strLen;
if (str == null || (strLen = str.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if ((Character.isWhitespace(str.charAt(i)) == false)) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
这有点太晚了,但这是一种功能性的检查方式:
Optional.ofNullable(str)
.filter(s -> !(s.trim().isEmpty()))
.ifPresent(result -> {
// your query setup goes here
});
Run Code Online (Sandbox Code Playgroud)
小智 5
根据输入返回true或false
Predicate<String> p = (s)-> ( s != null && !s.isEmpty());
p.test(string);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
862075 次 |
| 最近记录: |