将字符串转化为小写,可以使用transform函数 需要包含algorithm头文件
transform(S.begin(), S.end(), S.begin(), ::tolower); //将S都转为小写
transform(S.begin(), S.end(), S.begin(), ::toupper); //将S都转为大写
在字符串中查找字符,可以利用string自带的find函数
if(S.find('@')!= string::npos) //find函数如果成功找到的返回值为::npos
...
答案代码:
#include <regex> // regex_replace
#include <algorithm> // transform
class Solution {
private:
string prefix[4] = {"", "+*-", "+**-", "+***-"};
public:
string maskPII(string S) {
int at = S.find('@'); // 用来判断是不是邮箱
if(at != string::npos) {
transform(S.begin(), S.end(), S.begin(), ::tolower);
S.replace(1, at-2, "*****");
}
else {
S = regex_replace(S, regex("[^0-9]"), "");// 过滤非数字
int n = S.length();
S = prefix[n-10] + "***-***-" + S.substr(n-4);
}
return S;
}
};