我使用trim()
方法来修剪一些字符串字段中的前导和尾随空格。
siteRequest.getName().trim();
然而,当字符串字段为null时,它会按预期引发异常。我可以在修剪前检查值,如下所示:
siteRequest.getName() ? siteRequest.getName() : siteRequest.getName().trim();
然而,如果可能的话,我更喜欢一种更清洁的方式,这样就有几个人已经面临了这个问题。有什么更聪明的方法的建议吗?
不幸的是,Java仍然缺少空安全导航操作符。最接近的复制方法是使用可选的:
String trimmed = Optional.ofNullable(untrimmed).map(String::trim).orElse(null);
然而,很容易看出,在大多数情况下,这并不比简单的三元数好。如果您有一长串潜在的Nullable,并且希望避免嵌套的ternaries,那么它确实会大放异彩:
String trimmed = Optional.ofNullable(request)
.map(Request::getName)
.map(String::trim)
.orElse(null);
通常,这是通过Apache Commons库的trim方法完成的。这个库非常常见,基本上是Java的一部分。它将为字符串返回null。E、 g.StringUtils。修剪(“myString”)
将返回“myString”
我喜欢@Sebastiaan van den Broek的想法,但不想使用该库,因此要查看其实现:
// Trim
//-----------------------------------------------------------------------
/**
* <p>Removes control characters (char <= 32) from both
* ends of this String, handling {@code null} by returning
* {@code null}.</p>
*
* <p>The String is trimmed using {@link String#trim()}.
* Trim removes start and end characters <= 32.
* To strip whitespace use {@link #strip(String)}.</p>
*
* <p>To trim your choice of characters, use the
* {@link #strip(String, String)} methods.</p>
*
* <pre>
* StringUtils.trim(null) = null
* StringUtils.trim("") = ""
* StringUtils.trim(" ") = ""
* StringUtils.trim("abc") = "abc"
* StringUtils.trim(" abc ") = "abc"
* </pre>
*
* @param str the String to be trimmed, may be null
* @return the trimmed string, {@code null} if null String input
*/
public static String trim(final String str) {
return str == null ? null : str.trim();
}
在我看来,没有更好的方法来实施它。使用Optionals不是一个选项。因此,问题的原始解决思路得到了确认。
问题内容: 我在我的系统中将电话号码存储为VARCHAR2,以允许用户选择在电话号码前输入“ +”字符。 我的regexp完美地做到了这一点,但是当将数字存储在数据库中时,我想去除用户可能输入的所有空格。 我的正则表达式允许以下格式 我知道我可以通过不让用户在数字中添加空格来解决问题,但是我个人经验表明,由于客户端的某些愚蠢格式而导致验证错误令人沮丧。我曾尝试在INSERT / UPDATE触发器
问题内容: 在Java中,我这样做是为了修剪字符串: 输出为: 作品。但是我想知道是否通过给自己分配一个变量来做正确的事情。我不想通过创建另一个变量并将调整后的值分配给它来浪费资源。我想就地进行修剪。 那我这样做对吗? 问题答案: 您做对了。从文档中: 字符串是常量;它们的值创建后无法更改。字符串缓冲区支持可变字符串。由于String对象是不可变的,因此可以共享它们。 同样从文档中: 修剪 公共字
问题内容: 如何修剪JavaScript中的字符串? 问题答案: 自IE9 +起,所有浏览器都具有字符串方法。 对于不支持的浏览器,可以使用MDN中的以下polyfill : 也就是说,如果使用,也可以使用,并且可以处理undefined / null。 看到这个:
问题内容: 在目标C中,可以执行以下操作来检查字符串: 如何在Swift中检测空字符串? 问题答案: 现在具有使用以下命令检测空字符串的内置功能: Apple发行前文档:“字符串和字符”。
我正在处理的arraylist。 我尝试检查数组中的空索引的代码: 我试过了,但不知怎么的,验证不起作用。我想知道怎么做?有没有人知道这个问题的解决方法或工作方法?
问题内容: 与该方法等效的 JavaScript 是什么: C#仅在字符串的 开头 和 结尾 处修剪所选字符! 问题答案: 一行就足够了: 在功能上: