i18n 去除非字母数字字符的友好方式



我想去掉字符串中的任何非字母数字字符。我现在使用以下函数,但它肯定不适用于多种语言。有没有对 i18n 友好的方法?

static string StripNonAlphaNum(const string& token) {
    string s = token;
     // strip away non-alphanumeric parts using a RE expression
    RE2::GlobalReplace(&s, "[^A-Za-z0-9]", "");
    return s;
}

您可以将擦除删除习惯用语与std::isalnum谓词一起使用,如下所示:

std::string StripNonAlphaNum(std::string token) {
  token.erase(std::remove_if(token.begin(), token.end(), 
              [](char const &c){ return !std::isalnum(c); }), token.end());
  return token;
} 

现场演示

同样

也可以实现std::wstring

std::wstring StripNonAlphaNum(std::wstring token) {
  token.erase(std::remove_if(token.begin(), token.end(),
              [](char const &c){ return !std::iswalnum(c); }), token.end());
  return token;
}

现场演示

最新更新