gpt4 book ai didi

c#-4.0 - 使用 LINQ/扩展方法重复字符串

转载 作者:行者123 更新时间:2023-12-02 22:11:54 27 4
gpt4 key购买 nike

只是我正在调查的好奇心。

问题:简单地重复(乘法,有人会说)字符串/字符n次。
我知道有 Enumerable.Repeat 可以实现这个目标,但我试图在没有它的情况下做到这一点。在这种情况下,LINQ 似乎毫无用处,因为在 查询 中,例如

from X in "s" select X  

正在探索字符串“s”,因此X是一个字符扩展方法也是如此,因为例如“s”。聚合(blablabla) 将再次仅作用于字符“s”,而不作用于字符串本身。为了重复字符串,需要一些“外部”的东西,所以我认为lambdas委托(delegate),但如果不声明一个变量来分配委托(delegate)/lambda,这是无法完成的表达到。
所以就像定义一个函数并内联调用它一样:

( (a)=>{return " "+a;} )("a");  

delegate(string a){return " "+a}(" ");  

会给出“没有名称”错误(因此没有递归,据我所知,即使通过传递可能的lambda/委托(delegate)作为参数),最后由于其局限性,C# 甚至无法创建。
可能是我从错误的角度看待这件事。有什么想法吗?
这只是一个实验,我不关心性能,内存使用......只是它是一条线并且有点自治。也许有人可以用 Copy/CopyTo 做一些事情,或者将其转换到其他集合,我不知道。 反射也被接受。

最佳答案

要重复一个字符n次,您不会使用Enumerable.Repeat,而只需使用this string constructor :

string str = new string('X', 10);

要重复一个字符串,我不知道有什么比使用string.JoinEnumerable.Repeat更好的了

string foo = "Foo";
string str = string.Join("", Enumerable.Repeat(foo, 10));

编辑:如果不需要分隔符,可以使用string.Concat代替:

string str = string.Concat( Enumerable.Repeat(foo, 10) );

关于c#-4.0 - 使用 LINQ/扩展方法重复字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13864493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com