【发布时间】:2014-11-18 23:22:44
【问题描述】:
我有一个字符串变量,如果变量只包含一个空格或多个空格,我想用“null”替换字符串。我该怎么做?
【问题讨论】:
-
String.isBlank()会告诉你是空格还是"" -
String.isBlank()是 apache util 方法,不是 JDK 的一部分
我有一个字符串变量,如果变量只包含一个空格或多个空格,我想用“null”替换字符串。我该怎么做?
【问题讨论】:
String.isBlank() 会告诉你是空格还是""
String.isBlank() 是 apache util 方法,不是 JDK 的一部分
首先,您可以自己实现它,例如使用非常简单的正则表达式。
Java Regex 定义将“/s”定义为所有空白字符的模式。因此,匹配“/s+”的字符串为空或仅包含空格。
这是一个例子:
public boolean isEmpty(String value) {
return value.matches("/s*");
}
但通常情况下,自己做这件事并不是一个好主意。这是一种非常常见的模式,已经在很多库中实现了。 在我编写的几乎所有 Java 应用程序中,我的最佳实践是使用 apache commons lang 库。其中包括 StringUtils 类。 此类中的所有方法都是 nullsave,并密切关注所有可能的情况,例如空字符串。
所以对于 apache commons 它是:
StringUtils.isBlank(value);
看看这里:http://commons.apache.org/proper/commons-lang/javadocs/api-3.3.2/index.html
【讨论】:
.matches("\\s*");
这是一种你可以做到的方式:
String spaces = " -- - -";
if (spaces.matches("[ -]*")) {
System.out.println("Only spaces and/or - or empty");
}
else {
System.out.println("Not only spaces");
}
【讨论】:
spaces.matches("[ ]+") 标识完全由一个或多个空格组成的字符串。
这个怎么样?
if(yourstring.replace(" ","").length()==0) {
yourstring = null;
}
不需要正则表达式,因此应该比需要的解决方案更有效。
【讨论】:
假设你的变量是String var
那么,
if(var.replace(" ", "").equals("")) {
var = null;
}
【讨论】:
试试以下方法:
if(str.trim().isEmpty()){
str = null;
}
【讨论】:
trim() 对空白进行操作。对他来说可能很重要的细微差别。
\t 唯一的字符串。