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

判斷文字檔的特殊字元

尚未結案
wena
一般會員


發表:26
回覆:37
積分:12
註冊:2005-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-29 11:45:01 IP:218.162.xxx.xxx 未訂閱
我如何在文字檔判斷它裡面有無 tab鍵 換行鍵 是看他們的ASCII碼嗎? 那到底是什麼呢? 謝謝幫忙!
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-29 14:29:32 IP:61.66.xxx.xxx 未訂閱
換行的碼是 \n tab的碼是  \t    
Memo1->Lines->Clear();
Memo1->Lines->LoadFromFile("c:\\test.txt");
AnsiString sText = Memo1->Text;
if(sText.AnsiPos("\n"))
  ShowMessage("有換行!");
if(sText.AnsiPos("\t"))
  ShowMessage("有Tab!");
wena
一般會員


發表:26
回覆:37
積分:12
註冊:2005-07-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-29 15:08:31 IP:218.162.xxx.xxx 未訂閱
謝謝您的答覆 可是我的程式還是不能判斷 if(temp[i] == '\n') 還是說要使用你寫的語法 if(sText.AnsiPos("\n")) 才可以?
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-29 17:35:46 IP:221.169.xxx.xxx 未訂閱
引言: 謝謝您的答覆 可是我的程式還是不能判斷 if(temp[i] == '\n') 還是說要使用你寫的語法 if(sText.AnsiPos("\n")) 才可以?
wena:bass15大大講的完全沒問題不知道你的問題是?temp[i] 是?
依bass15大大延伸一下範例:
Memo1->Lines->Clear();
Memo1->Lines->LoadFromFile("c:\\test.txt");
AnsiString sText = Memo1->Text;
int j=0,k=0;
for (int i=1;i <= sText.Length(); i  ) { // AnsiString從1開始
  if (sText[i]=='\n')
    j  ;
  if (sText[i]=='\t')
    k  ;
}
ShowMessage("有" IntToStr(j) "個換行!");
ShowMessage("有" IntToStr(k) "個Tab!");
請參考!
Andy Chang
------
Andy Chang
wena
一般會員


發表:26
回覆:37
積分:12
註冊:2005-07-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-29 18:11:53 IP:218.162.xxx.xxx 未訂閱
謝謝答覆! 我試過程式了 它的確可以判斷換行 可是為何我總不能刪除換行 是我寫錯了嗎? 我的程式是:
for(i=RichEdit1->Text.Length() ; i>1 ; i--)
     {
       if(temp[i] == '\n')
       {
         temp.Delete(i,1) ;
       }
     }
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-30 00:32:38 IP:61.59.xxx.xxx 未訂閱
在Ritchedit裡面換行會寫作 \r\n
 
AnsiString temp = RichEdit1->Text;
for(i=temp.Length() ; i>=1 ; i--)
{
  if(temp[i] == '\n' || temp[i] == '\r')
  {
    temp.Delete(i,1) ;
  }
}
RichEdit1->Text = temp;    
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-30 01:19:32 IP:221.169.xxx.xxx 未訂閱
引言:
插花一下bass15大大勿見怪!
在Ritchedit裡面換行會寫作 \r\n
AnsiString temp = RichEdit1->Text;
for(i=temp.Length() ; i>=1 ; i--)  {
  if(temp[i] == '\r')  { //於RichEdit1上同時處理\r\n
    RichEdit1->SelStart = i-1;
    RichEdit1->SelLength = 2; //\r\n視兩字元
    RichEdit1->SelText="";
  }
}
// RichEdit1->Text = temp;    
Andy Chang
------
Andy Chang
wena
一般會員


發表:26
回覆:37
積分:12
註冊:2005-07-20

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-07-30 09:40:03 IP:218.162.xxx.xxx 未訂閱
謝謝你們的幫忙 我找到另一個很好用的語法 就是:temp = StringReplace(temp, "\r\n", " ", TReplaceFlags()<
wena
一般會員


發表:26
回覆:37
積分:12
註冊:2005-07-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-07-30 09:41:43 IP:218.162.xxx.xxx 未訂閱
sorry...    是
temp = StringReplace(temp, "\r\n", " ", TReplaceFlags()<     
        
系統時間:2024-05-18 6:19:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!