怎样实现文字变换:例如,将文中的“A”全部换成“1”,将文中的“B”全部换成“2”。

jlcclyc 2003-01-02 10:34:59
怎样实现文字变换:例如,将文中的“A”全部换成“1”,将文中的“B”全部换成“2”。
...全文
77 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenyongjie 2003-01-05
  • 打赏
  • 举报
回复
String s="sdjfksgdlABdfB",x;
for(int i=1;i<s,Length();i++)
{if(s.substring(i,1)=='A')
x=x+'1';
else if(s.Substring(i,1)=='B')
x=x+'2';
else x=x+s.substring(i,1);
}
试一下!
zywx 2003-01-04
  • 打赏
  • 举报
回复
AnsiString S1="12345ABCDEA";
for (int i=0;i<S1.Length;i++)
{
if (S1[i+1]=='A') S1[i+1]='1';
if (S1[i+1]=='B') S1[i+1]='2';

}

jlcclyc 2003-01-04
  • 打赏
  • 举报
回复
我试一下
俞庆平 2003-01-04
  • 打赏
  • 举报
回复
不好意思,上面的Replace有BUG,更正如下:
int TForm1::Replace(AnsiString & Str, char * A, char * B)
{
unsigned len = Str.Length();
if(len == 0) return 0;
char *Buf = new char[len+1];
Buf[len] = 0;

if((len = strlen(A))!= strlen(B)) return -1;

for(unsigned i = 0; i < (unsigned)Str.Length();i++)
{
Buf[i] = Str.c_str()[i];
for(unsigned j = 0; j < len; j++)
{
if(Str.c_str()[i] == A[j]) Buf[i]=B[j];
}
}
Str = Buf;
delete [] Buf;
return 0;
}

上面的方法还有一个比较有意思的用法。
如果
Str = "我爱你",
A = "我你";B = "你我";呵呵,每调换一次就会变一次。
俞庆平 2003-01-04
  • 打赏
  • 举报
回复
以上方法只要你指定:
如:
Str = "AAAAAABBBBB122424BBAA";
A = "AB";
B = "12";
即可完成A->1,B-2>的替换过程。
结果为"111111222221224242211"
俞庆平 2003-01-04
  • 打赏
  • 举报
回复
int Replace(AnsiString & Str, char * A, char * B)
{
unsigned len;
if((len = strlen(A))!= strlen(B)) return -1;
for(unsigned i = 0; i < (unsigned)Str.Length();i++)
{
for(unsigned j = 0; j < len; j++)
{
if(Str.c_str()[i] == A[j]) ((char *)Str.data())[i] = B[j];
}
}
return 0;
}

int Replace(AnsiString & Str, char A, char B)
{
if(A == B) return 0;
for(unsigned i = 0; i < (unsigned)Str.Length();i++)
{
if(Str.c_str()[i] == A) ((char *)Str.data())[i] = B;
}
return 0;
}
child_bj 2003-01-03
  • 打赏
  • 举报
回复
定义一个STRING,然后直接就可以像数组那样访问
比如:
String strTest("TEST");
然后就直接可以取到:
strTest[2]
wangxiangsjz 2003-01-03
  • 打赏
  • 举报
回复
AnsiString S1="12345ABCDEA";
for (int i=0;i<S1.Length;i++)
{
if (S1.Substr(i,1)=="A") S1.Substr(i,1)="1"
if (S1.Substr(i,1)=="B") S1.Substr(i,1)="2"

}
invalid 2003-01-03
  • 打赏
  • 举报
回复
AnsiReplaceStr
AnsiReplaceText
windtransient 2003-01-03
  • 打赏
  • 举报
回复
wangxiangsjz(王翔)
AnsiString 是从1开始计数的
sindycsdn 2003-01-03
  • 打赏
  • 举报
回复
char *c;
c=new char [3+1];
strcpy(c,s.c_str());
ShowMessage(*c);
for (int i=0;i<s.Length();i++)
{
c[i]=c[i]-'A'+1;
}

yuanque 2003-01-03
  • 打赏
  • 举报
回复
如果转换没有什么规律的话,可以首先建立一个映射吧

struct mapchar
{
char ch;
int number;
}

如果有规律的话,可以根据ascii码来运算,因为字符也是数字:)
如'A'好像是0x41:)
jlcclyc 2003-01-03
  • 打赏
  • 举报
回复
对不起,没说明白
我想问的是如何将一个文件中的内容更改.

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧