public virtual void Parse(string sTxt, string sTagDelimiter, string sTagDataDelimiter, string sTagSubDataDelimiter) { LastErrorTagIndex = -1; LastError = ""; m_aTags.Clear(); string [] asTagDelim = { sTagDelimiter }; string [] asTags = sTxt.Split(asTagDelim, StringSplitOptions.RemoveEmptyEntries); foreach (string sTag in asTags) { string [] asTagDataDelim = { sTagDataDelimiter }; string [] asTagDatas = sTag.Split(asTagDataDelim, StringSplitOptions.RemoveEmptyEntries); RscTextTag tt = new RscTextTag(); m_aTags.Add(tt); string [] asTagSubDataDelim = { sTagSubDataDelimiter }; tt.m_asLeft = asTagDatas[0].Split(asTagSubDataDelim, StringSplitOptions.RemoveEmptyEntries); if (asTagDatas.Length > 1) { tt.m_asRight = asTagDatas[1].Split(asTagSubDataDelim, StringSplitOptions.RemoveEmptyEntries); } } }
protected string DeCodeValue(RscTextTag tt) { string sRet = ""; int iCount = tt.m_asRight.Length; for (int i = 0; i < iCount; i++) { string sVal = ""; sVal = tt.m_asRight[i]; if (tt.LeftIndexOf("ENCODING=QUOTED-PRINTABLE") >= 0) { sVal = RscDecode.QuotedPrintable(sVal); } if (tt.LeftIndexOf("ENCODING=8BIT") >= 0) { //NOP... } else { if (tt.LeftIndexOf("CHARSET=UTF-8") >= 0) { if (sVal.Length > 0) { char [] acVal = sVal.ToCharArray(); byte [] ay = new byte [acVal.Length]; for (int j = 0; j < acVal.Length; j++) { ay[j] = ((byte)(acVal[j])); } sVal = Encoding.UTF8.GetString(ay, 0, ay.Length); } } } if (sVal.Length > 0) { if (sRet.Length > 0) { sRet += " "; } sRet += sVal; } } return(sRet); }