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("\r\n","");
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("\r\n when {0} then '{1}' ", item.Value, string.IsNullOrEmpty(item.Mark) ? item.Key : item.Mark);
}
else
{
result += string.Format("\r\n when {0} then '{1}' ", item.Value, item.Key);
}
}
if (enumInfos != null) { result += "\r\n else '未知枚举' end"; }
this.txtResult.Text = result;
}
}
public class EnumInfo
{
public string Mark { get; set; }
public string Key { get; set; }
public string Value { get; set; }
}
}