如何检查字符串是否是一定数量的字符并且包含(或不包含)某些字符?C++
How to check if a string is certain amount of characters and contains (or doesn't contain) certain characters? C++
假设我有两个基于用户输入的字符串(string1, string2)。我希望string1是至少5个字符, 最多10个字符,并且只允许包含以下内容:
- 大写字母
- 小写字母
- 数字(0 - 9)
否则,将提示用户继续输入字符串,直到满足要求。
while(len(string1)<5 or len(string1)>10) {
if(len(string1) > 10) {
cout << "Please enter a string that is less than 10 characters: ";
cin >> input;
} else if(len(string) < 5) {
cout << "Please enter a string that is more than 5 characters: ";
cin >> input;
} else {
cout << "Please enter a string with legal characters (uppercase/lowercase letters and numbers): ";
cin >> input;
}
如何检查string1是否只包含大写字母、小写字母和数字?
string legalChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
string1.find_first_not_of(legalChars)
对于string2,我希望用户输入的至少有6个字符长,并且包含至少一个非字母字符。while(len(string2)<6) {
if(len(string2)<6) {
cout << "Please enter a string that is at least 6 characters long: ";
cin >> input2;
}
}
如何检查string2中的非字母字符?我该如何处理这个问题?
对于string1
,您可以简单地检查长度至少为5个字符,最多为10个字符(使用std::string::length
),并将每个字符传递到isalnum
以检查它是否是字母数字。
对于string2
,您可以使用isupper
检查它至少有6个字符长并且至少有一个大写字母。
或者正如@Lorehead指出的那样,您可以直接使用regex。
使用std::regex_match()
。(http://en.cppreference.com/w/cpp/regex/regex_match)。没有完整的答案,因为这听起来像家庭作业。
如果您必须使用老式的方法,您可以使用<ctype.h>
中的isalnum()
和<string.h>
中的strspn()
函数。
希望这能解决你的问题.......这是ascii图表的链接
#include<iostream>
#include<string>
using namespace std;
int main()
{
string input1,input2;
bool inpFlag1=false,inpFlag2=false;
while(inpFlag1 == false)
{
cout<<"Enter First String:"<<endl;
cin>>input1;
if(input1.size()<4 || input1.size()>10)
{
cout<<"Error!Min:5 Characters and Max:10 characters!"<<endl;
}
else
{
for(int i=0;i<input1.size();i++)
{
if((input1.at(i)>= 48 && input1.at(i)<=57) ||(input1.at(i)>=65 && input1.at(i)<=90) || (input1.at(i)>=97 && input1.at(i)<= 122 ))
{
continue;
}
else
{
cout<<"Error Input string does not match conditions!"<<endl;
inpFlag1=false;
break;
}
}
inpFlag1=true;
}
}
while(inpFlag2 == false)
{
cout<<"Enter Second String:"<<endl;
cin>>input2;
if(input2.size()<6)
{
cout<<"Error! String should contain Min:6 Characters"<<endl;
}
else
{
for(int i=0;i<input2.size();i++)
{
if(input2.at(i)>=33 && input2.at(i)<=126)
{
continue;
}
else
{
cout<<"Error Input String does not match required conditions!" <<endl;
inpFlag2=false;
break;
}
}
inpFlag2=true;
}
}
cout<<endl;
cout<<"Entered Strings:"<<endl;
cout<<input1<<endl;
cout<<input2<<endl;
return 0;
}
相关文章:
- 计算在同一位置至少包含一个常用字符的不同字符串对
- 无法将字符数组转换为包含 utf-8 字符的字符串
- 如何从 QString 中包含的十六进制值中获取 ASCII 字符?
- 常量数组如何在每个元素中只能包含字符,而 char* 数组能够指向每个元素中的字符串?
- VSCode C++调试文件名中包含中文字符的文件时插件损坏
- 尝试使用 indexOf 创建一个 if 语句来检查字符串是否包含字符.有一点麻烦
- 如何制作一个只包含字符的简单加载屏幕
- 如果字符串向量包含字符'p',如何检查 c++
- 如何检查字符串是否包含字符
- 正则表达式:从模式字符串 1.string2'string3 中提取字符串,其中字符串 1 可以包含 '." 字符
- 在 c++ 中读取仅包含字符指针的文件
- 包含字符数组数组的结构
- C ++检查字符串是否包含字符以及如何将二进制字符串转换为整数
- 如何从包含字符和整数的行中解析出整数
- 在 c++ 中将字符串(包含字符和浮点数)转换为双精度
- 如何封送包含字符矩阵的数组结构
- 如何包含字符字面量
- 如何检查字符串是否包含字符或数字
- 如何拆分包含字符和数字的字符串值
- 从包含'