蛋碎 一地 之 抽象到什么级别?
今天 在博问 看到一问题
c#字符串分割
随机输入string X="fefefe68aaaaaaaaaaaa681300" 想得到的结果:fe fe fe 68 aa aa aa aa aa aa 68 13 00PS:字符串是随机的,个数可能是奇数,也可能是偶数.如果字符串个数是奇数就补0例:BC DE 24 HI JK LM 68 NO PQ RS T 最后T只有一个数要补0得 BC DE 24 HI JK LM 68 NO PQ RS 0T
突然想到,哎呦 我操 这插入的 索引 是有规律 可循的啊,
2,5,8...
好吧,这个该死的念头 让我开始了这次 蛋碎之旅。。
首先要完成题目中的 分隔 ,我先写 生成要插入 索引序列 的函数
经过良久调试。。得出 一下 版本。。
/// <summary> /// 获取插入索引序列 /// </summary> /// <param name="length"></param> /// <returns></returns> public IEnumerable<int> GetIndexs(int length) { int lastInsertIndex = 2; for (var i = 0; i < length / 2; i++) { if (i == 0) { yield return lastInsertIndex; continue; } yield return lastInsertIndex + 3; lastInsertIndex = lastInsertIndex + 3; } }当时写完这个方法 就觉得 一阵阵 蛋疼。。
而这个函数 也满足了 题目的 要求。
var X = "fefefe68aaaaaaaaaaaa681300q"; if (X.Length % 2 != 0) { X = X.Insert(X.Length - 1, "0"); } X = GetIndexs(X.Length).Aggregate(X, (current, index) => current.Insert(index, " ")); Console.WriteLine(X);我千不该万不该 又扫了一眼 GetIndexs 函数。
纳尼,竟然有 magic number!!
呐呐呐尼!这个函数 还可以在抽象!!
唉。。好吧 我又开始了。蛋疼变蛋碎了。。
/// <summary> /// 获取插入索引序列(蛋碎一地版) /// </summary> /// <param name="length">要获取的序列长度</param> /// <param name="splitorLength">分隔符长度</param> /// <param name="intervalLength">间隔长度</param> /// <returns></returns> public IEnumerable<int> GetInsertIndexs(int length, int splitorLength, int intervalLength) { int lastInsertIndex = intervalLength; for (var i = 0; i < length / intervalLength; i++) { if (i == 0) { yield return lastInsertIndex; continue; } yield return lastInsertIndex + intervalLength + splitorLength; lastInsertIndex = lastInsertIndex + intervalLength + splitorLength; } }蛋碎版完成出炉,
这个函数更强大哟亲,可以生成指定间隔的,指定插入符长度的 有序 序列。。
var X = "fefefe68aaaaaaaaaaaa681300q"; X = GetInsertIndexs(X.Length, 2, 3).Aggregate(X, (current, index) => current.Insert(index, "##")); Console.WriteLine(X);
尼玛不好好 看电影。。抽个毛的 象啊。。
唉。。
这个 函数 还是 很有用的。。看到的 收下吧。。
TAG: