想实现delphi的全字匹配函数。
如:select var_d, var_dd, var_d_his from table。将var_d替换成ss,得到结果
select ss, var_dd, var_d_his from table。
现有的StringReplace函数。替换后会变成这样。
select ss, ssd, ss_his from table。
有没有人给个方法,或者把代码贴一下delphi的。。
第一次发贴,但会结贴。有满意的答案立马结贴谢了。

解决方案 »

  1.   

      StringReplace('select var_d, var_dd, var_d_his from table' , 'var_d' , 'ss' , [rfIgnoreCase]);这样就只替换第一个匹配的文字了
      

  2.   


    关键是我里面可能有多个var_d。
      

  3.   

    换成这样:
    想实现delphi的全字匹配函数。
    如:select var_d, var_dd, var_d_his, var_d from table。将var_d替换成ss,得到结果
    select ss, var_dd, var_d_his, ss from table。
    现有的StringReplace函数。替换后会变成这样。
    select ss, ssd, ss_his, ss from table。
      

  4.   

    1楼的方法是对的,或者StringReplace('select var_d, var_dd, var_d_his from table' , 'var_d' , 'ss' , []);StringReplace最后一个参数不加rfReplaceAll就只会替代掉第一个var_d
      

  5.   

    不一定只有一个var_d还不明白么。
      

  6.   

    StringReplace('select var_d, var_dd, var_d_his from table' , 'var_d,' , 'ss,' , [rfReplaceAll, rfIgnoreCase]);var_d后面加个逗号一起替换
      

  7.   

    在 SQL里边,你的var_d后边只有两个字符可能出现吧?  ','和' '(空格),分两次替换StringReplace('select var_d, var_dd, var_d_his from table','var_d,','ss',[rfReplaceAll]);StringReplace('select var_d, var_dd, var_d_his from table','var_d ','ss',[rfReplaceAll]);这样可以了吧
      

  8.   


    对啊,SQL是自己写的,想怎么控制就怎么控制。
      

  9.   


    哎,没有想要的答案,我举例是sql,如果不是呢? 有其它方法么?  主要还是如何实现全字匹配。可通用。。
    而且不可能只有那两个字符,可能会有+ - * / = 等等。。
      

  10.   

    那你自己写一个嘛,循环字符串中的字符,
    判断
      P^ in [' ',',','+','-','*'......] 
    把关键字分离出来,然后替换命中的关键字即可
      

  11.   

    delphi中支持正则吗?
      

  12.   

    select var_d, var_dd, var_d_his from table。
    这个很简单
    StringReplace('select var_d, var_dd, var_d_his from table' , ' var_d,' , ' ss,' , []);
    这样就可以了
    因为你的关键字 前后肯定还有别的字符 比如空格 比如逗号 这些就能不会和别的重复
      

  13.   

    全字匹配 和这个函数没什么关系
    你要却分一个完整的“var_d”从肉眼来看 你是靠他前后的分割符号来区别的。那么 你在替换的时候把分割符号都带上不会就不重复了?
    你举列中var_d的前分割是空格后面是逗号。那么在替换查找的时候 你将“空格var_d逗号”作为检索条件 难道还有重复的?