線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1344
推到 Plurk!
推到 Facebook!

如何讀取與存入一個長字串中的某些子字串?

答題得分者是:gemi0305
Wuei
一般會員


發表:10
回覆:11
積分:4
註冊:2003-08-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-14 23:58:02 IP:211.76.xxx.xxx 未訂閱
您好: 我有一個很長的字串,裡面有很多子字串,中間以空白分隔 為方便起見以使每個字串加上空白的長度都一樣,如: " abcd abc ab a"這樣,每個字加空白都剛好5個字元 若我想讀取第三個字(ab),然後再寫另一個字回去(如def) 使這個字串變成" abcd abc def a" 關於讀和寫該怎麼做呢?有沒有現成的字串處理函數可用? 謝謝!
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-15 03:35:14 IP:61.224.xxx.xxx 未訂閱
Wuei你好,    自己寫一個function就好,我已經幫你寫好了, 叫ReplaceWord(); 直接拿用就可以,    用法:    結果字串 = ReplaceWord(來源自串,第幾個字,替代成什麼字);     
AnsiString TForm1::ReplaceWord(String SrcString, int Wordindex, String Words)
{
    AnsiString headStr,tailStr;        headStr = SrcString.SubString(1,5*(Wordindex-1));        if(Words.Length()>5)
       ShowMessage("the word's size is more than  5");
    else
      Words.printf("%5s",Words);        tailStr = SrcString.SubString(5*(Wordindex)+1,SrcString.Length()-(5*(Wordindex)));        return headStr+Words+tailStr;    }     
連程式都幫你寫好了: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=35747 發表人 - Gemi0305 於 2003/08/15 03:39:50 發表人 - Gemi0305 於 2003/08/15 09:20:09
Wuei
一般會員


發表:10
回覆:11
積分:4
註冊:2003-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-15 16:46:01 IP:210.192.xxx.xxx 未訂閱
哇...大大... 您真是太熱心了!!!!!! 也就是說,要寫入長字串的某些子字串 沒有像SubString()這種函式可以用 要用切開再組合起來的方法來做囉? 謝謝!
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-15 17:44:02 IP:210.66.xxx.xxx 未訂閱
Wuei你好,    其實還有一個辨法, 因為字串可以用陣列表示,所以可能可以把它當作陣列做一些處理, 把第幾個到第幾個陣列,寫入新的值~    只是個想法,沒去試,說不定行不通,呵~ 你可以自己試試看~ 國泰平安
Wuei
一般會員


發表:10
回覆:11
積分:4
註冊:2003-08-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-15 17:57:37 IP:210.192.xxx.xxx 未訂閱
不好意思,再問一下 我後來發現其實我的字串長度並不一致 有長有短,中間以空白間隔(間隔符號可以自訂) 我想依序讀出這個字串的子字串 是不是得寫個迴圈,將"一個一個字元"讀出來做判斷? 再次感謝
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-15 22:32:16 IP:61.224.xxx.xxx 未訂閱
以「空格」為分界點,來區分子字串, 並分別顯示在Memo上:     
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   String TmpStr = "1   123    123456     12";       String Words="";
   for(int i=1; i<=TmpStr.Length(); i++)
   {
        if(TmpStr.SubString(i,1)==" ")
           {
             if(Words=="")
                continue;
             else
                {
                  Memo1->Lines->Add(Words);
                  Words="";
                }
           }
        else
           Words+=TmpStr.SubString(i,1);
   }
   Memo1->Lines->Add(Words);    }    
國泰平安
系統時間:2024-07-01 0:29:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!