Esempio n. 1
0
        private string GetExportLimitColumnValue(TaskColumnItem temp, string columValue)
        {
            switch (temp.ExportLimit)
            {
            case EnumGloabParas.EnumExportLimit.ExportLimit1:
                break;

            case EnumGloabParas.EnumExportLimit.ExportLimit2:
                columValue = ReplaceHtml(columValue).Trim();
                break;

            case EnumGloabParas.EnumExportLimit.ExportLimit3:
                break;

            case EnumGloabParas.EnumExportLimit.ExportLimit4:
                break;

            case EnumGloabParas.EnumExportLimit.ExportLimit5:
                columValue = columValue.Trim();
                break;

            case EnumGloabParas.EnumExportLimit.ExportLimit6:
                columValue = temp.ExportLimitText + columValue.Trim();
                break;

            case EnumGloabParas.EnumExportLimit.ExportLimit7:
                columValue = columValue.Trim() + temp.ExportLimitText;
                break;

            case EnumGloabParas.EnumExportLimit.ExportLimit8:
                string[] itemList = temp.ExportLimitText.Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                for (var i = 0; i < itemList.Length; i += 2)
                {
                    if (itemList.Length > i + 1)
                    {
                        string st1 = itemList[i].TrimStart('"').TrimEnd('"');
                        string st2 = itemList[i + 1].TrimStart('"').TrimEnd('"');
                        columValue = columValue.Replace(st1, st2);
                    }
                }
                break;

            case EnumGloabParas.EnumExportLimit.ExportLimit9:
                break;

            default:
                break;
            }
            if (temp.ExportLimitSpaceFlag)
            {
                columValue = columValue.Trim();
            }
            return(columValue);
        }
Esempio n. 2
0
        private string GetRegString(TaskColumnItem temp)
        {
            string strCut = string.Empty;

            strCut += "(?<" + temp.DataTextType.Value + ">" + RegexString.RegexReplaceTrans(temp.StartPos.Value) + ")";
            switch (temp.LimitSign)
            {
            case EnumGloabParas.EnumLimitSign.LimitSign1:
                strCut += ".*?";
                break;

            case EnumGloabParas.EnumLimitSign.LimitSign2:
                strCut += "[^<>]*?";
                break;

            case EnumGloabParas.EnumLimitSign.LimitSign3:
                strCut += "[\\u4e00-\\u9fa5]*?";
                break;

            case EnumGloabParas.EnumLimitSign.LimitSign4:
                strCut += "[^\\x00-\\xff]*?";
                break;

            case EnumGloabParas.EnumLimitSign.LimitSign5:
                strCut += "[\\d]*?";
                break;

            case EnumGloabParas.EnumLimitSign.LimitSign6:
                strCut += "[\\x00-\\xff]*?";
                break;

            case EnumGloabParas.EnumLimitSign.LimitSign7:
                strCut += temp.LimitSignText.ToString();
                break;

            default:
                strCut += "[\\S\\s]*?";
                break;
            }
            strCut += "(?=" + RegexString.RegexReplaceTrans(temp.EndPos.Value) + ")";
            return(strCut);
        }
Esempio n. 3
0
        public DataTable GetDataTable(DataTable dataTable, List <TaskColumnItem> columnItemList, string html, ref string errMsg)
        {
            try
            {
                #region MyRegion
                string strCut   = string.Empty;
                bool   newTable = false;
                if (dataTable == null)
                {
                    dataTable = new DataTable();
                    newTable  = true;
                }
                foreach (var temp in columnItemList)
                {
                    if (newTable)
                    {
                        dataTable.Columns.Add(temp.DataTextType.Value, typeof(string));
                    }
                    strCut += GetRegString(temp) + "|";
                }
                strCut = strCut.Substring(0, strCut.Length - 1);
                #endregion
                Regex           re = new Regex(@strCut, RegexOptions.IgnoreCase | RegexOptions.Multiline);
                MatchCollection mc = re.Matches(html);
                if (mc.Count == 0)
                {
                    return(dataTable);
                }
                #region MyRegion
                int     rows = 0; //统计共采集了多少行
                int     m    = 0; //计数使用
                DataRow drNew;
                try
                {
                    while (m < mc.Count)
                    {
                        //新建新行
                        drNew = dataTable.NewRow();
                        rows++;
                        for (int i = 0; i < columnItemList.Count; i++)
                        {
                            #region columnItemList
                            TaskColumnItem item = columnItemList[i];
                            if (m < mc.Count)
                            {
                                if (i == 0)
                                {
                                    string tempValue = mc[m].Value;
                                    while (!tempValue.StartsWith(item.StartPos.Value, StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        int index = tempValue.IndexOf(item.StartPos.Value);
                                        if (index != -1)
                                        {
                                            tempValue = tempValue.Substring(index);
                                            continue;
                                        }
                                        m++;
                                        if (m >= mc.Count)
                                        {
                                            //退出所有循环
                                            goto ExitWhile;
                                        }
                                    }
                                    string value = tempValue.Substring(item.StartPos.Value.Length, tempValue.Length - item.StartPos.Value.Length);
                                    if (value.IndexOf(item.EndPos.Value) != -1)
                                    {
                                        value = value.Substring(0, value.IndexOf(item.EndPos.Value));
                                    }
                                    drNew[i] = this.GetExportLimitColumnValue(item, value);
                                    m++;
                                }
                                else
                                {
                                    string tempValue = mc[m].Value;
                                    #region MyRegion
                                    if (tempValue.StartsWith(item.StartPos.Value, StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        string value = tempValue.Substring(item.StartPos.Value.Length, tempValue.Length - item.StartPos.Value.Length);
                                        drNew[i] = GetExportLimitColumnValue(item, value);
                                        m++;
                                    }
                                    else
                                    {
                                        if (tempValue.StartsWith(item.StartPos.Value, StringComparison.CurrentCultureIgnoreCase))
                                        {
                                            m++; i--;
                                        }
                                        else
                                        {
                                            if (i < columnItemList.Count - 1)
                                            {
                                                if (!tempValue.StartsWith(columnItemList[i + 1].StartPos.Value, StringComparison.CurrentCultureIgnoreCase))
                                                {
                                                    m++; i--;
                                                }
                                            }
                                            else
                                            {
                                                m++; i--;
                                            }
                                        }
                                    }
                                    #endregion
                                }
                            }
                            #endregion
                        }
                        dataTable.Rows.Add(drNew);
                        drNew = null;
                    }
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                #endregion
            }
            catch (Exception ex)
            {
                errMsg = ex.Message;
            }
ExitWhile:
            return(dataTable);
        }