字符串替換
??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 閱讀(663)
評論(0) 編輯 收藏 所屬分類:
算法