【问题标题】:How to find a set of characters in a string如何在字符串中查找一组字符
【发布时间】:2016-05-12 07:51:06
【问题描述】:

我正在做一个项目,但我遇到了一个问题。我需要在字符串中找到一组字符,例如如果用户输入他/她的电子邮件,那么我必须检查电子邮件是否正确。我发现它使用字符串类find 函数,但我没有成功。我可以使用循环来查找最后一个字符,但我正在寻找一种最简单的方法来解决它。 示例:email@gmail.com 我想将.com 作为字符串的最后一个字符。

这是我的代码:

string checkEmail(const char* const prompt) {
    string str;
    bool check = true;
    do {
        cout << prompt << " : ";
        cin >> str;
        if (str.find_last_of(".com")) // here is the error, I think
            check = false;
    } while (check);
    return str;
}

【问题讨论】:

  • 我没有看到任何使用str.find 的结果对字符串进行子集化的代码
  • 我不是很明白这个问题,你是要检查输入字符串是否以“.com”结尾,还是要从字符串中获取最后几个字符跨度>
  • @FatihBAKIR 是的,你是对的。我想找到一个字符串的最后4个字符来检查它是否是.com
  • @EdChum 对不起,我已经更改了代码,但我也尝试过使用str.find。但是没有成功! :(
  • 如果您的目标是检查是否输入了有效的电子邮件地址,那就是not so easy。你最好使用现有的验证器。如果您不需要那么严格,您可以检查是否存在@ 和有效的域部分(在@ 之后)。通常,您还需要向其发送一封确认电子邮件,以确保该地址存在并且归输入该地址的人所有。

标签: c++ string find substring


【解决方案1】:

检查是否找到:

if (str.find_last_of(".com")==std::string::npos){
    check = false;
}

检查是否被发现

if (str.find_last_of(".com")!=std::string::npos){
    check = false;
}

【讨论】:

  • 嗯,你确定x.com.yyy 是一个有效的结果吗?
  • @SergeBallesta 这就是为什么我正在寻找这样一个解决方案来检查只有和 .com 子字符串在最后是否在这里?
【解决方案2】:

您可以使用std::string::substr,先获取最后4个字符为std::string,然后可以与“.com”进行比较:

std::string email = "example@mail.com";
std::string ext = email.substr(email.length() - 4, 4);
bool check = ext == ".com";

【讨论】:

    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 2017-03-22
    • 2016-01-27
    • 2020-06-19
    • 1970-01-01
    • 2014-01-17
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多