范围字符串到数组
我有一个字符串扩展方法,可以将范围内的数字字符串(如“1-25,36,45,50-100”)转换为包含范围内所有数字的整数数组。多年来,它一直运行良好,但是我现在需要它来处理比标准整数大得多的uint数。这意味着公共静态uint[]RangedStringToArray(此字符串值)
{
var result=value.Split(',')
。选择(x=>x.Split(“-”)
。选择(p=>new{First=uint.Parse(p.First()),Last=uint.Parse(p.Last())})
.SelectMany(x=>可枚举范围(x.First,x.Last-x.first1+1))
.OrderBy(z=>z)
返回结果。ToArray
()
}
x.Split ('-'))。
,选择(p=>new{First=uint.Parse(p.First()),last=uint.Parse(p.Last ()) })。
. Select众多(x=>GetUIntRange(x.First,x.Last-x.First+1))。
,OrderBy(z=>z);。
返回result.ToArray();。
}。
。
静态无效主(字符串[]参数)。
{。
var range=RangedStringToArray("1-25,36,45,50-100");。
foreach(范围内的var项目)。
Console.WriteLine(项目);。
Console.ReadLine();。
}。
}。
}。
。
My 2 cents public static uint[] RangedStringToArray(此字符串值)。
{。
变量结果 = 值,斯普利特(',')。
,Select(x => x.Split('-'))。
,Select(p => new { First = uint.Parse(p.First()), Last = uint.Parse(p.Last()) })。
,SelectMany(x => Range(x.First, x.Last))。
,OrderBy(z => z);。
返回结果,ToArray();。
}。
。
公共静态 I枚举范围(uint start, uint end)。
{。
if (end 。
for (uint i = start; i 。
收益率回报 i;。
}。
F#太好玩了: type String with 。
成员字符串,RangedStringToArray =。
字符串,拆分(',')。
| > array . map(fun s-> s . Split('-'))。
| > array . collect(fun a->[| uint 32,解析(a.)..UInt32,parse(a .)|]) > "1-5,36,45,50-53".RangedStringToArray;;
val it : uint32 [] = [|1u; 2u; 3u; 4u; 5u; 36u; 45u; 50u; 51u; 52u; 53u|]。
谢谢很多人,非常感谢!
你是个有趣的人,丹尼尔
页:
[1]