【发布时间】:2016-10-05 06:43:58
【问题描述】:
这是我的输入字符串:Muhammad Ali 65445519 76 butterfly123
这是我想要的输出:Muhammad Ali xxx-xx-xxx 76 xxxxxxxxx
注意:除了社会安全号码 (65445519) 之外,所有内容的长度都可能不同,即姓名、用户 ID(76) 和密码(butterfly123)。
示例:
科比布莱恩特 34567890 548 56mamba
我已经尝试过了,但是我有一个长度为 2 的固定用户 ID。任何人都可以想出一个用户 ID 也可以变化的解决方案吗?还是一种全新的不同方法?我不想使用字符串流,在其中你一个一个地接受输入,然后分别处理字符串。然而,将赞赏有效且短的字符串流解决方案。谢谢。
string s;
int j;
getline(cin,s);
for (int i=0; i<s.length(); i++)
{
if(s.at(i)=='0' || s.at(i)=='1' || s.at(i)=='2'
|| s.at(i)=='3' || s.at(i)=='4' || s.at(i)=='5'
|| s.at(i)=='6' || s.at(i)=='7' || s.at(i)=='8'
|| s.at(i)=='9')
{
s.replace(i,8,"xxxxxxxx");
s.insert(i+3,"-");
s.insert(i+6,"-");
j=i+14;
break;
}
}
for(j;j<s.length();j++)
{
s.replace(j,1,"x");
}
cout<<s<<endl;
【问题讨论】:
-
为什么不包括
cctype并使用isdigit((unsigned char)s.at(i))而不是if中的长条件? -
@MikeCAT 谢谢哥们,用过。
标签: c++ visual-c++ stdstring