想實作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的。。
第一次發貼,但會結貼。有滿意的答案立馬結貼。。。謝了。
uj5u.com熱心網友回復:
StringReplace('select var_d, var_dd, var_d_his from table' , 'var_d' , 'ss' , [rfIgnoreCase]);這樣就只替換第一個匹配的文字了
uj5u.com熱心網友回復:
關鍵是我里面可能有多個var_d。
uj5u.com熱心網友回復:
換成這樣:想實作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。
uj5u.com熱心網友回復:
1樓的方法是對的,或者StringReplace('select var_d, var_dd, var_d_his from table' , 'var_d' , 'ss' , []);
StringReplace最后一個引數不加rfReplaceAll就只會替代掉第一個var_d
uj5u.com熱心網友回復:
不一定只有一個var_d。。。還不明白么。
uj5u.com熱心網友回復:
StringReplace('select var_d, var_dd, var_d_his from table' , 'var_d,' , 'ss,' , [rfReplaceAll, rfIgnoreCase]);
var_d后面加個逗號一起替換
uj5u.com熱心網友回復:
也不行的,加,號現在只是這一種形式,如果我換成沒有逗號的替換呢? 還是搞不定啊。。。
uj5u.com熱心網友回復:
在 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]);這樣可以了吧
uj5u.com熱心網友回復:
對啊,SQL是自己寫的,想怎么控制就怎么控制。
uj5u.com熱心網友回復:
哎,沒有想要的答案,我舉例是sql,如果不是呢? 有其它方法么? 主要還是如何實作全字匹配。可通用。。
而且不可能只有那兩個字符,可能會有+ - * / = 等等。。
uj5u.com熱心網友回復:
那你自己寫一個嘛,回圈字串中的字符,判斷
P^ in [' ',',','+','-','*'......]
把關鍵字分離出來,然后替換命中的關鍵字即可
uj5u.com熱心網友回復:
判斷太多,怕遺漏。。所以問下有沒有全字匹配的函式實作。。。
uj5u.com熱心網友回復:
delphi中支持正則嗎?uj5u.com熱心網友回復:
select var_d, var_dd, var_d_his from table。這個很簡單
StringReplace('select var_d, var_dd, var_d_his from table' , ' var_d,' , ' ss,' , []);
這樣就可以了
因為你的關鍵字 前后肯定還有別的字符 比如空格 比如逗號 這些就能不會和別的重復
uj5u.com熱心網友回復:
全字匹配 和這個函式沒什么關系你要卻分一個完整的“var_d”從肉眼來看 你是靠他前后的分割符號來區別的。那么 你在替換的時候把分割符號都帶上不會就不重復了?
你舉列中var_d的前分割是空格后面是逗號。那么在替換查找的時候 你將“空格var_d逗號”作為檢索條件 難道還有重復的?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137861.html
標籤:語言基礎/算法/系統設計
