【问题标题】:Check if string contains an @ symbol or if the string is null [duplicate]检查字符串是否包含@符号或字符串是否为空[重复]
【发布时间】:2019-06-06 13:57:08
【问题描述】:

基本上,我有一个表单,人们可以在其中输入内容,其中有一部分是他们输入电子邮件地址的。有时,人们只是输入他们的名字而不输入实际的电子邮件地址。有时他们根本不填写。

有没有什么简单的方法可以检查字符串中是否有@符号并检查它是否为空?

感谢任何帮助

【问题讨论】:

  • str != null && str.contains("@")
  • 其实应该是反过来的!!:str != null && str.contains("@")
  • @achAmháin 如果 str 为 null,那么这将抛出 NPE.. 首先检查 null。
  • 是的 - 我意识到了这一点,并对其进行了编辑,干杯。
  • 为什么需要java来做前端验证?我认为您最好寻找 JavaScript 答案。

标签: java


【解决方案1】:
String s = "email@email.it";
    if(s!= null && !s.isEmpty() && s.contains("@") ) {
        System.out.println("ok");
    }
    else System.out.println("ko");
}

【讨论】:

  • !s.isEmpty() 不是必需的。当 s 包含“@”时,它永远不会为空
  • 是的,但是他想检查它是否为空,所以我想即使它是空的也要检查
【解决方案2】:

使用 AND 布尔运算符。

str != null && str.contains("@")

我们首先检查字符串不为空,然后检查它是否包含'@'。注意:首先进行空检查的原因是,如果字符串为空,我们不会尝试访问该字符串。

【讨论】:

  • 这个答案是我所需要的 - 我如何将其标记为经过验证的答案?
  • 点击灰色的勾,它会变成绿色。
【解决方案3】:

String 类包含一个contains 方法来检查@ 符号,您可以通过!= null 调用简单地检查null:

public static void main(String[] args) {
    String a = "should be false";
    String b = "should be @true";
    String c = null;
    System.out.println(checkString(a));
    System.out.println(checkString(b));
    System.out.println(checkString(c));
}

static boolean checkString(String str) {
    return str != null && str.contains("@");
}

输出:

是的

【讨论】:

    【解决方案4】:

    这里有一些非常简单的代码来实现这一点:

    String ourString = "example@emailIsCool.com";
    if(/* Check if our string is null: */ ourString != null &&
       /* Check if our string is empty: */ !ourString.isEmpty() &&
       /* Check if our string contains "@": */ ourString.contains("@")) {
        System.out.println("String Fits the Requirements");
    } else {
        System.out.println("String Does Not Fit the Requirements");
    }
    

    为了将来参考,这对于 Stack Overflow 来说非常广泛,您应该在发帖询问答案之前尝试检查 javadoc。例如,这里是 String 类的 javadoc:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html

    Oracle 提供的 Javadocs 详细说明了标准 Java 库中包含的所有类的每个方法和属性。这是 Java 7 的 javadoc 主页的链接。 https://docs.oracle.com/javase/7/docs/api/overview-summary.html

    【讨论】:

    • 哦,哇,我不知道那是一回事。我得熟悉一下。
    【解决方案5】:

    我认为使用Optional 是最好的方法。

    这样的代码:

    String nullEmail = null;
    System.out.println(Optional.ofNullable(nullEmail).filter(s -> s.contains("@")).isPresent());
    
    String rightEmail = "478309639@11.com";
    System.out.println(Optional.ofNullable(rightEmail).filter(s -> s.contains("@")).isPresent());
    
    String wrongEmail = "chentong";
    System.out.println(Optional.ofNullable(wrongEmail).filter(s -> s.contains("@")).isPresent());
    

    输出是:

    false
    true
    false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      相关资源
      最近更新 更多