BC++极简单的问题:替换字符!(10分)

  • 主题发起人 主题发起人 kmwap
  • 开始时间 开始时间
K

kmwap

Unregistered / Unconfirmed
GUEST, unregistred user!
什么函数可以:
a = abcdef
b = 123
把a 中的cd换成b ?
a= ab123ef
 
不会是没人知道吧!!!
 
{
String v="abcdefg";
int ipos=v.Pos("cd");
if(ipos!=0)
{
v[ipos]='1';
v[ipos+1]='2';
ShowMessage(v);
}
}
 
可以用StringReplace这函数试试啊!
 
同意楼上的,用StringReplace就可以实现这样的功能,而且其中一参数可以控制只是替换第一个满足条件的字符还是替换所有满足条件的字符
 
StringReplace最简单;)
 
同意楼上 wr960204 的:
{
String v="abcdefg";
int ipos=v.Pos("cd");
if(ipos!=0)
{
v[ipos]='1';
v[ipos+1]='2';
ShowMessage(v);
}
}
这样速度快,点用资源少!又不难理解,为什么不用呢?
 
wr960204的方法对 b是String,长度不定就不方便了。
 
#pragma hdrstop
//#include <condefs.h>
#include <stdio.h>
#include <conio.h>
#include <string>
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
int main(int argc, char* argv[])
{
string s="Hello world";
int nWordEnd=s.find(' ');
string sub_string1 =s.substr(0,nWordEnd);
printf("Original String :%s/n",s.c_str());
printf("SubString of First Word:%s/n",sub_string1.c_str());
string sub_string2 =s.append(" OK!");
printf("SubString of First Word:%s/n",sub_string2.c_str());
string sub_string3 =s.replace(2,6,"iisss",5);
printf("SubString of First Word:%s/n",sub_string3.c_str());
string sub_string4 =s.substr(3,nWordEnd);
printf("SubString of First Word:%s/n",sub_string4.c_str());
string sub_string5 =s.insert(5," a..a..a..");
printf("SubString of First Word:%s/n",sub_string5.c_str());
getch();
return 0;
}
 
要么用 StringReplace, 要么自己写 regex, 或者去开放源码中
抄一段 regex (推荐)
 
a=StringReplace(a,"cd",b,TReplaceFlag()<<rfReplaceAll);
 
AnsiString a,b;
TReplaceFlags flag ;
flag = TReplaceFlags()<<rfReplaceAll;
a= "abcdef";
b = "123";
a=StringReplace(a,"cd",b,flag );
ShowMessage(a);
 
后退
顶部