【问题标题】:How to know if the string variabel contains only space in java?如何知道字符串变量是否只包含java中的空格?
【发布时间】:2014-11-18 23:22:44
【问题描述】:

我有一个字符串变量,如果变量只包含一个空格或多个空格,我想用“null”替换字符串。我该怎么做?

【问题讨论】:

标签: java string space


【解决方案1】:

首先,您可以自己实现它,例如使用非常简单的正则表达式。

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*");
【解决方案2】:

这是一种你可以做到的方式:

    String spaces = "   -- - -";
    if (spaces.matches("[ -]*")) {
        System.out.println("Only spaces and/or - or empty");
    }
    else {
        System.out.println("Not only spaces");
    }

【讨论】:

  • 只有一个空格还是多个空格有效?
  • 它适用于多个空格,但不适用于空格(例如制表符、换行符)
  • 使用spaces.matches("[ ]+") 标识完全由一个或多个空格组成的字符串。
  • 它有效,现在我还有一个问题,如果在我的字符串变量中包含单个/多个空格和单个/多个 - 字符,例如:( - ),我想替换为“null "。
  • @Muhammad 只需将 [ ] 正则表达式替换为 [ -]。请注意,+ 表示 1 或更多,* 表示 0 或更多
【解决方案3】:

这个怎么样?

if(yourstring.replace(" ","").length()==0) {
    yourstring = null;
}

不需要正则表达式,因此应该比需要的解决方案更有效。

【讨论】:

  • 那么当我的字符串变量不仅包含空格时?
  • 嘿!我说的差不多! :D
【解决方案4】:

假设你的变量是String var

那么,

if(var.replace(" ", "").equals("")) {
    var = null;
}

【讨论】:

    【解决方案5】:

    试试以下方法:

     if(str.trim().isEmpty()){
             str = null;
     } 
    

    【讨论】:

    • 他说的是“空格”,而不是“空白”。 trim() 对空白进行操作。对他来说可能很重要的细微差别。
    • @Andy Brown :我不认为他想要一个 \t 唯一的字符串。
    • @AndyBrown 你能在这里给我链接或解释吗?编程中这两件事有什么区别?)
    • 我也理解这个问题,他不想要空字符串。这也包括所有其他空白字符。
    • @Donvino 你可以用谷歌搜索。基本上,空格是 32 个 ascii char ' ',空格是制表符、换行符等。
    猜你喜欢
    • 2016-12-10
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2019-07-14
    相关资源
    最近更新 更多