全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1112
推到 Plurk!
推到 Facebook!

請問有函式可以尋找到A*CD 其中*是任意數的字串嗎?

尚未結案
anaconda1813
一般會員


發表:29
回覆:29
積分:11
註冊:2004-10-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-14 02:38:54 IP:140.123.xxx.xxx 未訂閱
我只知道Pos可以找到裡面的數字 可是當我想要尋找A*CD其中*可以是任意的數字請問有這樣的函式嗎??
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-23 12:18:29 IP:220.138.xxx.xxx 未訂閱
需要自己寫才有。 如果您要找的是 A*CD 表示 ACD, AsdfCDasd, AfiefjCDer, A12344323123CD123 都要找出,就自己找兩次即可,例如:    
AnsiString a=Edit1->Text;
AnsiString firstKey="A";
AnsiString secondKey="CD";
int posKey1=a.Pos(firstKey);
if(posKey1>0) // 有找到 firstKey
{
  // 取出 firstKey 之後的字串
  a=a.SubString(posKey1 firstKey.Length(),a.Length());
  int posKey2=a.Pos(secondKey);
  if(posKey2>0) // 有找到 secondKey
  {
    ShowMessage("找到 "   firstKey   AnsiString::StringOfChar('*',posKey2-1)   secondKey);
    return;
  }
}
ShowMessage("找不到");
C# 初學者請多指教 < href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw dllee's sharespace Beckhoff Fieldbus
------
http://www.ViewMove.com
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-24 12:53:50 IP:59.115.xxx.xxx 未訂閱
anaconda1813 您好:    不知道您對 Regular Express (中譯名稱頗多,有譯為 "正規表達式",也有一為 "正規運算式"、"正則運算式"....等等) 暸不瞭解?這種處理方式在 CGI 程式中使用得非常多也非常普遍,您所想要達到的功能僅是其中的一小項而已,更為複雜的比對都能輕而易舉的去處理。    如果您的程式中有很多地方需要做類似的處理動作,或者是您有不少程式都會需要做類似的處理,那麼您不妨考慮一下安裝支援 Regular Express 的元件來使用,下列兩個網址分別連結到兩個支援前述功能的免費元件頁面,參考看看吧: Regular Expression Component Library http://viper.python-hosting.com:4072/Components/RegularExpression/ Regex http://ourworld.compuserve.com/homepages/John_Maddock/regexpp.htm 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/09/24 12:56:59
anaconda1813
一般會員


發表:29
回覆:29
積分:11
註冊:2004-10-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-27 00:03:10 IP:140.123.xxx.xxx 未訂閱
引言: anaconda1813 您好: 不知道您對 Regular Express (中譯名稱頗多,有譯為 "正規表達式",也有一為 "正規運算式"、"正則運算式"....等等) 暸不瞭解?這種處理方式在 CGI 程式中使用得非常多也非常普遍,您所想要達到的功能僅是其中的一小項而已,更為複雜的比對都能輕而易舉的去處理。 如果您的程式中有很多地方需要做類似的處理動作,或者是您有不少程式都會需要做類似的處理,那麼您不妨考慮一下安裝支援 Regular Express 的元件來使用,下列兩個網址分別連結到兩個支援前述功能的免費元件頁面,參考看看吧: Regular Expression Component Library http://viper.python-hosting.com:4072/Components/RegularExpression/ Regex http://ourworld.compuserve.com/homepages/John_Maddock/regexpp.htm 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/09/24 12:56:59
先謝謝dllee的回答 那兩個網頁之前有在貴站收詢到過,可是不太了解要怎麼使用它的元件
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-27 00:53:33 IP:61.230.xxx.xxx 未訂閱
anaconda1813 您好:    下列這一篇對 Regex++ 有簡單的介紹,注意其中有寫到 regex_search 字樣的地方: Regex 簡介(Regular Expression Library for C ) http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33912 而其中有一個連結到外部站台的文章如下,對 Regular Expression 做了深入簡出的教學,不妨去瀏覽一下: 龍門少尉的窩 http://main.rtfiber.com.tw/~changyj/ 7 天天敲鍵盤 v 時時按滑鼠 8
i_am_jcl
一般會員


發表:3
回覆:9
積分:2
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-29 17:22:05 IP:220.130.xxx.xxx 未訂閱
依據anaconda1813的需求 的確用Regular Express最為適當 不過考慮到要額外安裝元件之類的麻煩步驟  我在此提供一個暴力解法@@!    #include  #include #include bool FindACD(char *src , long *ret) ; void __fastcall TForm1::Button1Click(TObject *Sender) { bool ret ; long value ; ret = FindACD("ACD" , &value ) ; // ret = false , value = ???? ret = FindACD("AAAAAAAAAA103CD" , &value ) ; // ret=true , value = 103 ret = FindACD("ACDA99999CDACD" , &value ) ; // ret=true , value = 99999 } //--------------------------------------------------------------------------- bool FindACD(char *src , long *return_value) { char *i ; int len ; char *p1,*p2,*p3 ; if(!src) return false ; p1 = src ; while(*p1) { if(*p1 != 'A') continue ; p2 = p1 ; p3 = strstr(p2 , "CD") ; if(!p3) continue ; if(*p2 == *p3 ) continue ; for(i= p2 ; i < p3 ; i ) { if(!isdigit(*i) ) break ; } if( i != p3 ) continue ; sscanf(p2,"%ld",return_value); return true ; } return false ; }
anaconda1813
一般會員


發表:29
回覆:29
積分:11
註冊:2004-10-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-09-30 01:36:37 IP:140.123.xxx.xxx 未訂閱
謝謝 I_am_jcl 提供的方法 以及Redsnow提供的資訊
系統時間:2024-05-18 7:53:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!