問題
使用 String取Byte從第n位以後n個byte
解決方法
常在寫一些資料交換系統的工程師都知道,最常用來交換資料的就是TXT格式,
然而格式大概都是如下:
欄位 | 位置 | 長度 |
NAME | 1 | 20 |
ID | 21 | 10 |
AGE | 31 | 2 |
SEX | 33 | 1 |
而一個中文字有2個BYTE的大小,因此若欄位有夾雜中英文的話,常常會取錯資料,因此貢獻出自己的class用來處理!
此擷取資料的方式很簡單,所見即所得,也就是將文件上的欄位對抄餵給function就可以了!!
namespace B2c.DataEngine.Core { public class GetChar { private int totalLenght = 0; public GetChar(int TotalLenght) { //if (TotalLenght == 0) // throw new ArgumentException("Can't be zero"); totalLenght = TotalLenght; } ////// 取得字串,字串,幾位,開始以後幾位 /// public string Position(string stringLine, int startPosition, int afterNumber) { byte[] _byte = System.Text.Encoding.Default.GetBytes(stringLine); string _string = string.Empty; if (_byte.Length >= totalLenght) { int _sp = startPosition-1; int _ep = afterNumber; _string = System.Text.Encoding.Default.GetString(_byte, _sp, _ep); } return _string; } } }
1 則留言:
Nothing so bad, as not to be good for something.
張貼留言