從制造到創造
          軟件工程師成長之路
          posts - 292,  comments - 96,  trackbacks - 0
          字符串替換

          ??1?
          ??2?#include?<iostream.h>
          ??3?#include?<string.h>
          ??4?
          ??5?//////////////////////////////////////////////////////////////
          ??6?//????????????????????????????????????????????????????????????//
          ??7?//?函數名:????????????????????????????????????????????????????//
          ??8?//????????????????????????????????????????????????????????????//
          ??9?//????????SearchSubString????????????????????????????????????????//
          ?10?//????????????????????????????????????????????????????????????//
          ?11?//?函數功能:????????????????????????????????????????????????//
          ?12?//????????????????????????????????????????????????????????????//
          ?13?//????????在源字符串中查找子字符串????????????????????????????//
          ?14?//????????????????????????????????????????????????????????????//
          ?15?//?入口參數:????????????????????????????????????????????????//
          ?16?//????????????????????????????????????????????????????????????//
          ?17?//????????strSrc:?源字符串????????????????????????????????????//
          ?18?//????????strSearch:?子字符串????????????????????????????????????//
          ?19?//????????????????????????????????????????????????????????????//
          ?20?//?返回值:????????????????????????????????????????????????????//
          ?21?//????????????????????????????????????????????????????????????//
          ?22?//????????-1:在源字符串沒有找到子字符串????????????????????????//
          ?23?//????????非-1:子字符串在源字符串中的起始序號????????????????????//
          ?24?//????????????????????????????????????????????????????????????//
          ?25?//////////////////////////////////////////////////////////////
          ?26?
          ?27?int?SearchSubString(?char?strSrc[],?char?strSearch[]?)
          ?28?{
          ?29?????int?nSearchIndex?=?-1;????????//?返回值序號
          ?30?
          ?31?????int?nIndex?=?0;????????????????//?當前序號
          ?32?????while?(?strSrc[nIndex]?!=?'\0'?)
          ?33?????{
          ?34?????????if?(?strSrc[nIndex]?==?strSearch[0]?)????//?當第一個字符相同時
          ?35?????????{
          ?36?????????????//?判斷后面的字符是否都相同
          ?37?????????????for?(?unsigned?int?nPos?=?1;?nPos?<?strlen(?strSearch?);?nPos++?)
          ?38?????????????{
          ?39?????????????????if?(?strSrc[nIndex?+?nPos]?!=?strSearch[nPos]?)
          ?40?????????????????{
          ?41?????????????????????break;
          ?42?????????????????}
          ?43?????????????}
          ?44?
          ?45?????????????if?(?nPos?==?strlen(?strSearch?)?)????????//?如果找到子字符串
          ?46?????????????{
          ?47?????????????????nSearchIndex?=?nIndex;
          ?48?
          ?49?????????????????break;
          ?50?????????????}
          ?51?????????????else????????//?第一個字符串后的字符串不相同,源字符串的查找位置下移
          ?52?????????????{
          ?53?????????????????nIndex++;
          ?54?????????????}
          ?55?????????}
          ?56?????????else????????//?當第一個字符不相同時,源字符串的查找位置下移
          ?57?????????{
          ?58?????????????nIndex++;
          ?59?????????}
          ?60?????}
          ?61?
          ?62?????return?nSearchIndex;
          ?63?}
          ?64?
          ?65?//////////////////////////////////////////////////////////////
          ?66?//????????????????????????????????????????????????????????????//
          ?67?//?函數名:????????????????????????????????????????????????????//
          ?68?//????????????????????????????????????????????????????????????//
          ?69?//????????ReplaceString????????????????????????????????????????//
          ?70?//????????????????????????????????????????????????????????????//
          ?71?//?函數功能:????????????????????????????????????????????????//
          ?72?//????????????????????????????????????????????????????????????//
          ?73?//????????在源字符串中替換字符串????????????????????????????????//
          ?74?//????????????????????????????????????????????????????????????//
          ?75?//?入口參數:????????????????????????????????????????????????//
          ?76?//????????????????????????????????????????????????????????????//
          ?77?//????????strSrc:?源字符串????????????????????????????????????//
          ?78?//????????strSearch:?被替換的字符串????????????????????????????//
          ?79?//????????strReplace:替換的字符串????????????????????????????????//
          ?80?//????????????????????????????????????????????????????????????//
          ?81?//?返回值:????????????????????????????????????????????????????//
          ?82?//????????????????????????????????????????????????????????????//
          ?83?//????????無返回值????????????????????????????????????????????//
          ?84?//????????????????????????????????????????????????????????????//
          ?85?//?說明:????????????????????????????????????????????????????//
          ?86?//????????????????????????????????????????????????????????????//
          ?87?//????????源字符串是以被替換的字符串開始的字符串????????????????//
          ?88?//????????????????????????????????????????????????????????????//
          ?89?//////////////////////////////////////////////////////////////
          ?90?
          ?91?void?ReplaceString(?char?strSrc[],?char?strSearch[],?char?strReplace[]?)
          ?92?{
          ?93?????int?nSearchLen?=?strlen(?strSearch?);????//?被替換的字符串的長度
          ?94?????int?nReplaceLen?=?strlen(?strReplace?);????//?替換的字符串的長度
          ?95?
          ?96?????if?(?nSearchLen?<?nReplaceLen?)????????????//?查找字符串比替換字符串短
          ?97?????{
          ?98?????????//?移動字符串
          ?99?????????for?(?unsigned?int?nIndex?=?strlen(?strSrc?);?nIndex?>=?nSearchLen;?nIndex--?)
          100?????????{
          101?????????????strSrc[nIndex?+?nReplaceLen?-?nSearchLen]?=?strSrc[nIndex];
          102?????????}
          103?????}
          104?????else????????????????????????????????????//?查找字符串比替換字符串長
          105?????{
          106?????????//?移動字符串
          107?????????int?nIndex?=?nSearchLen;
          108?????????while?(?strSrc[nIndex]?!=?'\0'?)
          109?????????{
          110?????????????strSrc[nIndex?-?nSearchLen?+?nReplaceLen]?=?strSrc[nIndex];
          111?
          112?????????????nIndex++;
          113?????????}
          114?????????strSrc[nIndex?-?nSearchLen?+?nReplaceLen]?=?'\0';
          115?????}
          116?
          117?????//?替換字符串
          118?????for?(?int?nIndex?=?0;?nIndex?<?nReplaceLen;?nIndex++?)
          119?????{
          120?????????strSrc[nIndex]?=?strReplace[nIndex];
          121?????}
          122?
          123?????return;
          124?}
          125?
          126?//////////////////////////////////////////////////////////////
          127?//????????????????????????????????????????????????????????????//
          128?//?函數名:????????????????????????????????????????????????????//
          129?//????????????????????????????????????????????????????????????//
          130?//????????ReplaceSubString????????????????????????????????????//
          131?//????????????????????????????????????????????????????????????//
          132?//?函數功能:????????????????????????????????????????????????//
          133?//????????????????????????????????????????????????????????????//
          134?//????????在源字符串中替換字符串????????????????????????????????//
          135?//????????????????????????????????????????????????????????????//
          136?//?入口參數:????????????????????????????????????????????????//
          137?//????????????????????????????????????????????????????????????//
          138?//????????strSrc:?源字符串????????????????????????????????????//
          139?//????????strSearch:?被替換的字符串????????????????????????????//
          140?//????????strReplace:替換的字符串????????????????????????????????//
          141?//????????????????????????????????????????????????????????????//
          142?//?返回值:????????????????????????????????????????????????????//
          143?//????????????????????????????????????????????????????????????//
          144?//????????無返回值????????????????????????????????????????????//
          145?//????????????????????????????????????????????????????????????//
          146?//////////////////////////////////////////////////////////////
          147?
          148?void?ReplaceSubString(?char?strSrc[],?char?strSearch[],?char?strReplace[]?)
          149?{
          150?????int?nIndex?=?0;????????????????//?開始查找的位置
          151?????int?nSearchIndex?=?0;????????//?在當前字符串中被替換的字符串的位置
          152?
          153?????while?(?(?nSearchIndex?=?SearchSubString(?strSrc?+?nIndex,?strSearch?)?)?!=?-1?)
          154?????{
          155?????????ReplaceString(?strSrc?+?nIndex?+?nSearchIndex,?strSearch,?strReplace?);
          156?
          157?????????nIndex?+=?nSearchIndex?+?strlen(?strReplace?);
          158?????}
          159?
          160?????return;
          161?}
          162?
          163?void?main()
          164?{
          165?????char?strArr[128]?=?"abcdeGHbcdejHKbcdeOOO";
          166?????char?strSearch[]?=?"bcde";
          167?????char?strReplace[]?=?"1111111";
          168?
          169?????ReplaceSubString(?strArr,?strSearch,?strReplace?);
          170?
          171?????cout?<<?strArr?<<?endl;
          172?
          173?????return;
          174?}

          posted on 2006-09-08 19:29 CoderDream 閱讀(664) 評論(0)  編輯  收藏 所屬分類: 算法

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(9)

          我參與的團隊

          隨筆分類(245)

          隨筆檔案(239)

          文章分類(3)

          文章檔案(3)

          收藏夾(576)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 458376
          • 排名 - 114

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 民勤县| 巩义市| 尖扎县| 永善县| 龙泉市| 南通市| 南川市| 南澳县| 娱乐| 米林县| 虹口区| 太原市| 玛纳斯县| 临泽县| 锦屏县| 洪雅县| 洪泽县| 塘沽区| 宁远县| 丰镇市| 观塘区| 中牟县| 甘泉县| 建昌县| 南溪县| 香港| 潮安县| 临西县| 朝阳区| 忻州市| 商水县| 望谟县| 麻阳| 土默特右旗| 黔江区| 中宁县| 会泽县| 弥渡县| 江门市| 宿迁市| 紫云|