|
|
|
|
|
|||||
|
|||||
| 樓主 肥肥
|
我有一個文件檔,內容如下:
每一行文字均代表一筆 record 每個 column 的組合,沒有用分隔的符號來區隔開每個 column 欄位, 唯一能利用的是每個 column 的固定資料長度,所以每行資料都是對齊的(因為資料長度一樣), 想利用 SYSTEM.IO.StreamReader 以 Encoding.GetEncoding("BIG5") 來讀出資料後再 insert 到 db 內。 但有個問題是,他的長度計算碰到了中文就亂掉了,一般 Data type 當然是以半形英數來計算長度的, 以 StreamReader.readLine 到的字串(中英mix),便無法以固定的資料長度來抓取欄位資料了, 因為他遇到了中文字只會當作是一個字元長度(實際上應該是2個字元才對),如此一來 column 就亂掉了。 目前想到的方案是,readLine 後,再每個字元每個字元判斷他是全形or半形,以此來決定該 column 應該抓取到的字串長度, 但這樣還滿麻煩的(column 欄位不少) ~ 不知道有沒有其它高手可以提供較佳的方法呢 ? 謝謝:D
本篇文章發表於2005-12-06 16:46
|
||||
| VP、EP、QP、HP該如何使用? | 免費申請藍色部落 |
| 1樓 |
每一行都有空白,何不考慮抓空白呢,先讀每一行,然後抓出空白區分欄位~
本篇文章回覆於2005-12-06 17:12
|
||||
| 2樓
作者回應
肥肥
|
空白並無法作為欄位的區隔 ...
其中的 ...... 一個無言呀
本篇文章回覆於2005-12-06 17:42
|
||||
| 3樓 |
System.Text.Encoding.Default.GetBytes(你的字串).Length()
用這個試試看,中文字或全形符號會是兩個字元,即一個中文字(或全形符號)=兩個半型英文字(或半形數字) 剛剛是過中文字和全形符號都可以轉成兩個字元,這是寫在.vb檔中;但如果是日文字就不行了 ex. Dim gStr as string = "我1" Response.write ("字串長度 = " & System.Text.Encoding.Default.GetBytes(你的字串).Length()") 畫面印出的結果是 字串長度 = 3
本篇文章回覆於2008-05-09 11:13
|
||||
| 4樓 |
剛忘記改
Response.write ("字串長度 = " & System.Text.Encoding.Default.GetBytes(gStr).Length()")
本篇文章回覆於2008-05-09 11:14
|
||||
| 5樓 |
我也有類似的問題 ...
廠商給的格式是這樣的方式 1234567890123456789012345678901234567890 ---------+---------+---------+---------+ 123456 A111111 王小頭 王大頭 123457 A111112 李小炸 李大炸 123458 A111113 哈雷路亞 哈雷機車 代碼1 位置 1-6 代碼2 位置 8-15 名稱1 位置 16-29 名稱2 位置 30-40 我想檢查給的格式是否正確,所以在讀取檔案之後,用確認空白位置的方式來檢查是否正確。 在試著輸出各位置的字元時,我發現在 C# 中,中文字元被判定成 1 個字元,並不是 2 個。 所以空白的位置就不固定,沒辦法作檢查了...
本篇文章回覆於2008-06-26 17:28
|
||||
| 6樓 |
有點說錯了...
重新說明一下格式, # 代表空白位置 123456#A111111#王小頭#######王大頭###### 123457#A111112#李小炸#######李大炸###### 123458#A111113#哈雷路亞#####哈雷機車#### 代碼1 位置 1-6 代碼2 位置 8-14 名稱1 位置 16-27 名稱2 位置 29-40 空白固定的位置在 7,15,28,我只打算抓這 3 個位置的字元判定是否為空白而已。 我的問題就是不知道怎麼找出 7,15,28 的值... 因為在 C# 中,中文字元被判定成 1 個字元,空白的位置,會因為名稱1的長度不同而變...
本篇文章回覆於2008-06-26 18:00
|
||||
| 7樓 |
如果是:
string s = "123,123,花"; string[] sList = s.Split(s,','); for(int i=0;i<sList.Lenght;i++ { MessabgBox.Show(sList[i].Lenght.ToString()); } 得到的結果是:3,3,1 我想表達的是,這樣一來無論是中文字英文字, 計算出來的長度都是一樣,因為你的字串已經以","區隔了, 也不會有因為中文英文長度不同的問題發生!
本篇文章回覆於2008-07-02 13:56
|
| 回覆 |
| 如要回應,請先登入. |
|
![]() |
| 網站導覽| 網站介紹 | 會員權益 | 點數說明 | 加值服務 | 大事紀 | 廣告刊登 |常見問題 | 聯絡我們 |
捨得資訊股份有限公司 版權所有 ©copyright 2004 All Rights Reserved 艾堤數位科技股份有限公司 網站維護、經營管理 | Managed by I-Tea Technology |
|
|