Пример #1
0
        /// <summary>
        /// 执行变量
        /// </summary>
        /// <param name="txt">原始字符串</param>
        /// <param name="ParameterValues">保存参数的列表</param>
        /// <returns>处理后的字符串</returns>
        public string Execute(string txt, System.Collections.ArrayList ParameterValues)
        {
            if (this.myVariables == null)
            {
                throw new System.InvalidOperationException("未设置 Variables 属性");
            }

            if (txt == null || txt.Length == 0)
            {
                return(txt);
            }

            string[] strItems = AnalyseVariableString(txt, strVariablePrefix, strVariableEndfix);
            if (strItems == null)
            {
                return(null);
            }
            System.Text.StringBuilder myStr = new System.Text.StringBuilder();
            for (int iCount = 0; iCount < strItems.Length; iCount++)
            {
                if ((iCount % 2) == 0)
                {
                    myStr.Append(strItems[iCount]);
                }
                else
                {
                    string strName      = strItems[iCount];
                    bool   bolParameter = strName.StartsWith("@");
                    if (bolParameter)
                    {
                        strName = strName.Substring(1);
                    }
                    string strValue = null;
                    if (myVariables.Exists(strName))
                    {
                        strValue = myVariables.Get(strName);
                    }
                    else
                    {
                        strValue = "";
                    }
                    if (ParameterValues != null && bolParameter)
                    {
                        ParameterValues.Add(strValue);
                        myStr.Append(" ? ");
                    }
                    else
                    {
                        myStr.Append(strValue);
                    }
                }
            }
            return(myStr.ToString());
        }