日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

禁用字检测

發布時間:2025/6/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 禁用字检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

utf8編碼的數據可直接使用下面的代碼

最關鍵的步驟就是把字符串拆成單個字,UTF-8編碼的字,如果只有一個字節則其最高二進制位為0;如果是多字節,其第一個字節從最高位開始,連續的二進制位值為1的個數決定了其編碼的位數,其余各字節均以10開頭。

UTF-8最多可用到6個字節。?

1字節 0xxxxxxx?

2字節 110xxxxx 10xxxxxx?

3字節 1110xxxx 10xxxxxx 10xxxxxx?

4字節 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx?

5字節 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx?

6字節 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx


其它就很簡單了

1、禁用字處理 ? 禁用字拆分后以第一個為key保存

2、待測試字符串

? ?a)、拆分成單字

? ?b)、大寫轉小寫,字母和空格全角轉半角,去掉多余空格(英文字母后最多只會有一個空格,中文后不應該有空格)

? ?c)、遍歷字符串的所有字 檢測每個字對應的禁用字組是否在待測字符串中?

#include?<string> #include?<vector> #include?<map> #include?<set> #include?<iostream> #include?<sstream> #include?<string.h> #include?<stdio.h>class?CDisableWord { struct?SDisableWord {std::string str; }; typedef?std::vector<SDisableWord>? ?VDW; private:std::map<std::string,?VDW> m_mapDisableWord;std::set<std::string> m_setAllDisableWord;//?特殊轉換?std::map<std::string,?std::string>??m_mapSpecialWord; private://?把字符串拆分為單個字size_t?SplitWord(const?char*?pSrc,?unsigned?int?len,?std::vector<std::string>&?output);//?獲取特殊字對應的轉換字const?std::string*?GetSpecialWord(const?std::string&?str); public:CDisableWord();//?設置禁用字void?AddOneDisableWord(const?std::string&?str);//?檢測bool?CheckStr(const?char*?pSrc,?unsigned?int?len);bool?CheckStr(const?std::string&?str); };CDisableWord::CDisableWord() {std::string?qjdx[26]?=?{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};std::string?qjxx[26]?=?{"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};std::string?dx?=?"ABCDEFGHIJKLMNOPQRSTUVWXYZ";std::string?rst?=?"abcdefghijklmnopqrstuvwxyz";std::string?str1?=?"a";std::string?str2?=?"a";for(int?i?=?0;?i?<?26;?i++){str1[0]?=?rst[i];str2[0]?=?dx[i];m_mapSpecialWord[qjdx[i]]?=?str1;m_mapSpecialWord[qjxx[i]]?=?str1;m_mapSpecialWord[str2]?=?str1;}m_mapSpecialWord[" "]?=?std::string("?"); }//?把字符串拆分為單個字 size_t?CDisableWord::SplitWord(const?char*?pSrc,?unsigned?int?len,?std::vector<std::string>&?output) {std::string?ch;unsigned?char?byte;for(unsigned?int?i?=?0,?wlen?=?0;?i?<?len;?i?+=?wlen){byte?=?(unsigned?char)pSrc[i];if?(byte?>=?0xFC)wlen?=?6;??else?if?(byte?>=?0xF8)wlen?=?5;else?if?(byte?>=?0xF0)wlen?=?4;else?if?(byte?>=?0xE0)wlen?=?3;else?if?(byte?>=?0xC0)wlen?=?2;elsewlen?=?1;if(i?+?wlen?>?len)break;ch.clear();for(unsigned?int?j?=?0;?j?<?wlen;?j++)ch?+=?pSrc[i+j];output.push_back(ch);}return?output.size(); }//?獲取特殊字對應的轉換字 const?std::string*?CDisableWord::GetSpecialWord(const?std::string&?str) {std::map<std::string,?std::string>::iterator?miter?=?m_mapSpecialWord.find(str);if(miter?==?m_mapSpecialWord.end())return?NULL;return?&(miter->second); }void?CDisableWord::AddOneDisableWord(const?std::string&?str) {if(m_setAllDisableWord.find(str)?!=?m_setAllDisableWord.end())return;std::vector<std::string>?output;if(SplitWord(str.c_str(),?str.size(),?output)?==?0?||?output[0].size()?==?0)return;std::map<std::string,?VDW>::iterator?miter?=?m_mapDisableWord.find(output[0]);if(miter?==?m_mapDisableWord.end()){m_mapDisableWord[output[0]]?=?VDW();miter?=?m_mapDisableWord.find(output[0]);}if(miter?==?m_mapDisableWord.end())return;SDisableWord?sdw;sdw.str?=?str;miter->second.push_back(sdw); }bool?CDisableWord::CheckStr(const?char*?pSrc,?unsigned?int?len) {if(len?==?0)return?true;std::string?str(pSrc,?len);return?CheckStr(str); }bool?CDisableWord::CheckStr(const?std::string&?str) {if(str.size()?==?0)return?true;std::vector<std::string>?output;if(SplitWord(str.c_str(),?str.size(),?output)?==?0?||?output[0].size()?==?0)return?false;//?大寫轉小寫??全角轉半角for(size_t?i?=?0;?i?<?output.size();?++i){const?std::string*?pStr?=?GetSpecialWord(output[i]);if(pStr)output[i]?=?*pStr;}std::string?StrSrc?=?"";????????//轉換之后的字符串std::string?StrDelSpace?=?""; //刪除非英文之后的所有空格?所有大寫轉成小寫std::set<std::string>?sonly;for(size_t?i?=?0;?i?<?output.size();?++i){sonly.insert(output[i]);StrSrc?+=?output[i];bool?bnoadd?=?false;if(i?>?0?&&?output[i]?==?"?"){bnoadd?=?true;for(int?j?=?int(i?-?1);?j?>=?0;?--j){if(output[j]?==?"?")continue;if(output[j].size()?>?1)bnoadd?=?false;else?if(j?+?1?==?int(i))?//?英文字符留一個空格bnoadd?=?false;break;}}if(!bnoadd)StrDelSpace?+=?output[i];}bool?bSame?=?(StrDelSpace?==?StrSrc);std::set<std::string>::iterator?siter?=?sonly.begin();for(;?siter?!=?sonly.end();?++siter){std::map<std::string,?VDW>::iterator?miter?=?m_mapDisableWord.find(*siter);if(miter?==?m_mapDisableWord.end())continue;for(size_t?j?=?0;?j?<?miter->second.size();?++j){SDisableWord&?sdw?=?miter->second[j];if(StrSrc.find(sdw.str)?!=?std::string::npos)return?false;else?if(!bSame?&&?StrDelSpace.find(sdw.str)?!=?std::string::npos)return?false;}}return?true; }int?main() {CDisableWord?cdw;//?設置禁用字std::string?strdw[]?=?{"中文",?"英文",?"測試",?"aabb",?"測?試",?"cc?dd"};for(int?i?=?0;?i?<?6;?i++)cdw.AddOneDisableWord(strdw[i]);while(1){char?s[51];std::cin.getline(s,50);if(cdw.CheckStr(s,?strlen(s)))printf("收到:%s??沒有敏感字\n",?s);elseprintf("收到:%s??敏感字?敏感字?敏感字\n",?s);}return?0; }//?g++?-g?-o?DisableWord?DisableWord.cpp


轉載于:https://blog.51cto.com/13611395/2301670

總結

以上是生活随笔為你收集整理的禁用字检测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美激情18p | 午夜欧美精品久久久久久久 | 国产精品久久久久毛片 | 黄片毛片在线看 | 亚洲人成人无码网www国产 | 中文字幕在线视频观看 | 污污的视频在线免费观看 | 涩涩爱在线| 国产片一区二区 | 露出调教羞耻91九色 | 亚洲色诱 | 日本丰满肉感bbwbbwbbw | 国产网站无遮挡 | 国产96视频 | 好吊视频一区二区三区 | 一本色道久久亚洲综合精品蜜桃 | 国产精品免费看片 | 天天搞夜夜爽 | 疯狂揉花蒂控制高潮h | 小视频国产 | 大地资源中文在线观看免费版 | 夜间福利在线观看 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 精品中文在线 | 大胸奶汁乳流奶水出来h | 欧美日韩一区二区在线视频 | 精品国产999久久久免费 | 国产精品亚洲精品 | 国产69熟| 亚洲成人精品一区 | a毛片毛片av永久免费 | 欧美人与野 | 国产视频第二页 | 美女屁股无遮挡 | 欧美大片xxxx | 夜夜看av| 下面一进一出好爽视频 | 大地资源二中文在线影视免费观看 | 91蝌蚪九色 | 一级特黄特色的免费大片视频 | 久久99久久久久 | 国产专区在线播放 | 天天插插 | 美女扒开下面让男人捅 | 91福利专区 | 永久免费的av网站 | 亚洲成人www | 国产免费一区二区三区最新6 | 婷婷在线一区 | 一本色道久久综合亚洲精品按摩 | 污导航在线观看 | 亚洲另类在线观看 | 麻豆chinese新婚xxx | 疯狂做爰高潮videossex | 有码在线 | 激情五月av | 国产成人精品二区三区亚瑟 | 欧美日韩中文国产 | 国产精品一区二区免费视频 | 狂野欧美性猛交xxxx巴西 | 国产伦精品一区二区三区免.费 | 蜜桃av噜噜一区二区三区网址 | jlzzjlzz亚洲女人18 | 免费看a| 18黄暴禁片在线观看 | 天堂网av2018 | 欧美日韩高清一区二区 国产亚洲免费看 | 91麻豆精品国产91久久久久久 | 色老二导航 | 日本一区成人 | 日朝毛片| 爱的色放韩国电影 | 亚洲一区动漫 | 久久免费视频99 | 禁果av一区二区三区 | 欧美第二页 | 亚洲激情免费 | 久久国产精品影院 | 中国人与拘一级毛片 | 亚洲一级片免费看 | xxx黄色片 | 天天狠天天插 | 国产农村妇女aaaaa视频 | 亚洲色图在线播放 | 人人看人人模 | 国产中文字幕免费 | 免费啪视频在线观看 | 日韩一级黄 | 一区二区日韩av | se94se欧美 | 大桥未久视频在线观看 | 男人的天堂黄色 | 国产免费不卡视频 | 美女扒开让男人桶爽 | 女人扒开腿让男人捅爽 | 在线高清免费观看 | 91免费在线观看网站 | 中日韩黄色片 | 亚洲国产日韩av |