using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text.RegularExpressions; namespace TestPro { public partial class CaseWhenSqlGeneration : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnOk_Click(object sender, EventArgs e) { string enumString = this.txtEnum.Text.Trim().Replace(" ",""); bool useMark = this.chkUseMark.Enabled; string result = string.Empty; List<EnumInfo> enumInfos = new List<EnumInfo>(); string regString = "(?:(?:\s*///\s*<summary>)\s*///\s*(?<mark>[\S]*?)(?:\s*///\s*</summary>))*\s*((?<key>[\S]+)\s*=\s*(?<value>[\d]+))"; Regex regex = new Regex(regString, RegexOptions.None); MatchCollection matchs = regex.Matches(enumString); foreach (Match match in matchs) { enumInfos.Add(new EnumInfo { Mark = match.Groups["mark"].Value, Key = match.Groups["key"].Value, Value = match.Groups["value"].Value }); } foreach (var item in enumInfos) { if (this.chkUseMark.Checked) { result += string.Format(" when {0} then '{1}' ", item.Value, string.IsNullOrEmpty(item.Mark) ? item.Key : item.Mark); } else { result += string.Format(" when {0} then '{1}' ", item.Value, item.Key); } } if (enumInfos != null) { result += " else '未知枚举' end"; } this.txtResult.Text = result; } } public class EnumInfo { public string Mark { get; set; } public string Key { get; set; } public string Value { get; set; } } }