打造Delphi中字符串的replace函数计算机等级考试

文章作者 100test 发表时间 2010:01:01 09:30:39
来源 100Test.Com百考试题网


  这是小弟在这里的第一篇文章,加之自己水平也不是很高,就来讨论一个基础但是很实用的问题吧,希望能给大家一些帮助。
  用过vb的或asp的朋友都知道,在vb里有一个很实用的replace函数,它的功能是把一个字符串中与子串(又叫模式串)相匹配的串替换为指定的串。举个例子来说有这样一个字符串:s:=’apple is apple!’ ,用replace函数replace(s,’apple’,’box’)后,s就变为’box is box!’。串的长度也相应改变了。这是一个很有用的函数,大家都知道在开发数据库系统时会经常用到结构化查询语句sql,而这个语句中对有些字符是比较敏感的,比如说单引号,如果在sql语句中出现单引号(因为单引号是在sql中规定的一个有意义的字符)程序就会出现意想不到的错误,甚至可以被他人利用使系统产生严重安全漏洞(这就是著名的sql注入式攻击,相信大家还记得以前csdn论坛曾发现的这个漏洞吧)。这时你就需要在数据库操作时候将单引号替换为其他的字符串或空串,在读出数据的时候再替换回来,这样数据记录中就可以记录单引号,而不发生错误了。
  然而,我在delphi中却没有发现类似的函数(或许是我没找到?),实在是很不方便,于是自己写了一个,在以后的数据库系统开发中就方便多了。说了那么多废话,下面是代码,加上注释应该比较容易理解。
  procedure replace(var s:string.const SourceChar:pchar.const RChar:pchar).
  //第一个参数是原串,第二个是模式串,第三个是替换串
  var
  ta,i,j:integer.
  m,n,pn,sn:integer.
  SLen,SCLen,RCLen:integer.//SLen表示原串的长度,SCLen表示模式传的长度,RCLen表示替换串的长度
  IsSame:integer.
  newp:array of char.//用来保存替换后的字符数组
  begin
  SLen:=strlen(pchar(s)).SCLen:=strlen(SourceChar).RCLen:=strlen(RChar).
  j:=pos(string(SourceChar),s).
  s:=s chr(0).ta:=0.i:=j.
  while s[i]

相关文章


动态生成合计计算机等级考试
TListView组件使用方法计算机等级考试
异类的屏幕保护计算机等级考试
组件实例的命名规则计算机等级考试
打造Delphi中字符串的replace函数计算机等级考试
StatusBar有多个子栏时确定鼠标双击哪一个子栏计算机等级考试
全国计算机等级考试二级笔试样卷Delphi语言程序设计计算机等级考试
使用内存映象实现进程间全局变量计算机等级考试
使用互斥对象让程序只运行一次计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛