2020-02-05
1.题目描述
写一个bash脚本来判断输入文件中的字符串是否为有效电话号码
2.题解
使用正则表达式来进行匹配
3.代码
grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt
代码如下:
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
using namespace std;
ifstream fin("file.txt");
int main(){
string s;
bool f[14],flag;
int i;
while (!fin.eof()){
getline(fin,s);
flag=false;
memset(f,false,sizeof(f));
if (s.length()==14){
f[0]=f[4]=f[5]=f[9]=1;
if (s[0]!='('||s[4]!=')'||s[5]!=' '||s[9]!='-') flag=false;
else{
for (i=0;i<14;i++){
if (!f[i]){
if (s[i]>'9'||s[i]<'0'){
flag=false;
break;
}
}
}
if (i>=14) flag=true;
}
}else if (s.length()==12){
f[3]=f[7]=1;
if (s[3]!='-'||s[7]!='-') flag=false;
else{
for (i=0;i<12;i++){
if (!f[i]){
if (s[i]>'9'||s[i]<'0'){
flag=false;
break;
}
}
}
if (i>=12) flag=true;
}
}
if (flag) cout<<s<<endl;
}
return 0;
}