过滤非法字符 三

实现文件:

#include "stdafx.h"

#include <string>
#include <vector>
#include <algorithm>
#include <functional>

#include "WordLib.h"
#include "_string.h"

namespace WordLib{

typedef std::basic_string<char, ChatTraintsEx> __String;
typedef std::vector<__String> __WordList;

static const char* __strWordLib[] = {
"***",
"***",
"***",
"**** ",
"**** you",
"script"
};

static __WordList __wordList;

static __String __nullStr = " ";

void __InitWordList()
{
if(__wordList.size() != 0)
return ;

for(size_t i = 0; i < sizeof(__strWordLib) / sizeof(const char*); ++i)
__wordList.push_back(__strWordLib[i]);

std::sort(__wordList.begin(), __wordList.end());
}

bool _FLYINGMAGIC_2_CUT_WORD IsValid(const char* str)
{
__InitWordList();

if(str != NULL)
{
__String strSrc(str);

__WordList::iterator itEnd = __wordList.end();

for(__WordList::iterator it = __wordList.begin(); it != itEnd; ++it)
{
if(strSrc.find(*it) != -1)
return false;
}
}

return true;
}

bool _FLYINGMAGIC_2_CUT_WORD Filtrate(char* dst, size_t len, const char* src)
{
__InitWordList();

bool bRet = false;

if(src != NULL && dst != NULL && strlen(src) <= len)
{
__String strSrc(src);

__WordList::iterator itEnd = __wordList.end();

for(__WordList::iterator it = __wordList.begin(); it != itEnd; ++it)
{
__String::size_type begin = strSrc.find(*it);
if(begin != -1)
{
for(__String::size_type t = 0; t < it->size(); ++t)
strSrc[begin + t] = ' ';
// strSrc.assign(__nullStr, begin, it->size());

bRet = true;
}
}

strcpy(dst, strSrc.c_str());
}

return bRet;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值