У меня есть переменная, которая содержит строку, и я хочу заменить строку "null", если переменная содержит только пробел или несколько пробелов. Как мне это сделать?
Попробуйте следующее:
if(str.trim().isEmpty()){
str = null;
}
trim()
работает с пробелами. Тонкая разница, которая может быть важна для него.
\t
только строку.
Это можно сделать так:
String spaces = " -- - -";
if (spaces.matches("[ -]*")) {
System.out.println("Only spaces and/or - or empty");
}
else {
System.out.println("Not only spaces");
}
Предположим, что ваша переменная - String var
Затем,
if(var.replace(" ", "").equals("")) {
var = null;
}
Как насчет этого?
if(yourstring.replace(" ","").length()==0) {
yourstring = null;
}
Не требует регулярных выражений, поэтому он должен быть немного более эффективным, чем решения.
Прежде всего, вы можете реализовать его самостоятельно, например, используя регулярное выражение, которое очень просто.
Определение 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.isBlank()
скажет вам, если это только пробел или""
String.isBlank()
являетсяString.isBlank()
методом apache, а не частью JDK