看看这段代码可不可以简化,都来试试

巴士上的邂逅 2017-06-24 04:56:43
如果看不懂,复制过去,运行一下就知道了
string ss = "1=nan|2=nv|3=wu";
var aa = ss.Split('|').Select(s => string.Format("IIF(HHH={0},'{1}',{{0}})", s.Split('=')));
string b = "";
foreach (var a in aa)
{
if (b == "")
b = a;
else
b = string.Format(b, a);
}
Console.WriteLine(string.Format(b, "''"));
...全文
195 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
巴士上的邂逅 2017-06-26
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
这应该是最简的了
            var dt = ss.Split('|').Reverse().Aggregate("''", (x, y) => string.Format("IIF(HHH={0},'{1}',", y.Split('=')) + x + ")");
            Console.WriteLine(dt);
腻害,我之前也试过Aggregate这个方法,没能研究透就放弃了,又学到一手!
xuzuning 2017-06-25
  • 打赏
  • 举报
回复
这应该是最简的了
            var dt = ss.Split('|').Reverse().Aggregate("''", (x, y) => string.Format("IIF(HHH={0},'{1}',", y.Split('=')) + x + ")");
            Console.WriteLine(dt);
yangguosheng 2017-06-25
  • 打赏
  • 举报
回复
学习了学习了
xuzuning 2017-06-25
  • 打赏
  • 举报
回复
            var st = new Stack<string>(ss.Split('|'));
            var rs = "''";
            while(st.Count > 0) rs = string.Format("IIF(HHH={0},'{1}',", st.Pop().Split('=')) + rs +")";
            Console.WriteLine(rs);
匹配 "1=nan|2=nv|3=wu"这个格式的正则表达式:(?:\|?\w+=\w+)+
xuzuning 2017-06-24
  • 打赏
  • 举报
回复
            var c = "''";
            var r = ss.Split('|').Reverse();
            r.ToList().ForEach(s =>
            {
                 c = Regex.Replace(s, @"(\w+)=(\w+)", string.Format("IIF(HHH=$1,'$2',{0})", c));
            });
            Console.WriteLine(c);
巴士上的邂逅 2017-06-24
  • 打赏
  • 举报
回复
附加一问题:就是匹配 "1=nan|2=nv|3=wu"这个格式的正则表达式

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧