pra*_*ash 26 java regex string trim is-empty
我确信之前必须以不同的方式提出这个问题 - 因为isEmptyOrNull是如此常见但人们以不同的方式实现它.但我对最佳可用方法有好奇的查询,这对于内存和性能都有好处.
1)下面没有考虑所有空格,例如空XML标记
return inputString==null || inputString.length()==0;
Run Code Online (Sandbox Code Playgroud)
2)下面一个小心,但修剪可以吃一些性能+记忆
return inputString==null || inputString.trim().length()==0;
Run Code Online (Sandbox Code Playgroud)
3)转换为模式匹配器(仅当字符串非零长度时调用)
return inputString==null || inputString.trim().length()==0 || inputString.trim().length()==0;
Run Code Online (Sandbox Code Playgroud)
4)还有其他吗?
小智 26
Apache Commons的有用方法:
org.apache.commons.lang.StringUtils.isBlank(String str)
Run Code Online (Sandbox Code Playgroud)
Gre*_*egH 18
要检测字符串是空还是空,您可以使用以下内容,而不在项目中包含任何外部依赖项,并且仍然保持代码简单/干净:
if(myString==null || myString.isEmpty()){
//do something
}
Run Code Online (Sandbox Code Playgroud)
或者如果还需要检测空格:
if(myString==null || myString.trim().isEmpty()){
//do something
}
Run Code Online (Sandbox Code Playgroud)
您可以轻松地将这些包装到实用程序方法中,以便更简洁,因为这些是非常常见的检查:
public final class StringUtils{
private StringUtils() { }
public static bool isNullOrEmpty(string s){
if(s==null || s.isEmpty()){
return true;
}
return false;
}
public static bool isNullOrWhiteSpace(string s){
if(s==null || s.trim().isEmpty()){
return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
然后通过以下方式调用这些方法
if(StringUtils.isNullOrEmpty(myString)){...}
和
if(StringUtils.isNullOrWhiteSpace(myString)){...}
Joo*_*gen 15
只是为了显示java 8的立场来删除空值.
String s = Optional.ofNullable(myString).orElse("");
if (s.trim().isEmpty()) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果你可以使用,这是有道理的Optional<String>
.
来自Google Guava的这个可以在同一时间检出"null和空字符串".
Strings.isNullOrEmpty("Your string.");
Run Code Online (Sandbox Code Playgroud)
使用Maven添加依赖项
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
与Gradle
dependencies {
compile 'com.google.guava:guava:20.0'
}
Run Code Online (Sandbox Code Playgroud)
还没有看到任何完全本机的解决方案,所以这里有一个:
return str == null || str.chars().allMatch(Character::isWhitespace);
Run Code Online (Sandbox Code Playgroud)
基本上,使用本机 Character.isWhitespace() 函数。从那里,您可以实现不同级别的优化,具体取决于其重要性(我可以向您保证,在 99.99999% 的用例中,不需要进一步优化):
return str == null || str.length() == 0 || str.chars().allMatch(Character::isWhitespace);
Run Code Online (Sandbox Code Playgroud)
或者,为了真正优化(但很难看):
int len;
if (str == null || (len = str.length()) == 0) return true;
for (int i = 0; i < len; i++) {
if (!Character.isWhitespace(str.charAt(i))) return false;
}
return true;
Run Code Online (Sandbox Code Playgroud)
我喜欢做的一件事:
Optional<String> notBlank(String s) {
return s == null || s.chars().allMatch(Character::isWhitepace))
? Optional.empty()
: Optional.of(s);
}
...
notBlank(myStr).orElse("some default")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
76616 次 |
最近记录: |