什么是基本的字符串$的C#等价物

时间:2010-04-15 21:51:51

标签: c# string

有没有一种优雅的linqy方式来做到这一点?

我想要做的是创建给定长度的字符串,由另一个字符串的倍数组成,直到该长度

所以对于长度 - 9和输入字符串“xxx”我得到“xxxxxxxxx”(即长度为9)

对于非整数倍,那么我想截断该行。

我可以使用循环和StringBuilder轻松完成此操作,但我希望看看该语言是否可以轻松表达这个想法。

(仅供参考我为我的儿子做复活节数学作业)

3 个答案:

答案 0 :(得分:3)

不,没有简单和优雅 - 你必须自己编码。

您可以构造一个包含多个重复字符的字符串,但不重复字符串, 即。

string s = new string("#", 6);    // s = "######"

要使用字符串执行此操作,您需要一个循环来连接它们,然后最简单的方法是使用子字符串截断到所需的最终长度 - 沿着以下行:

string FillString(string text, int count)
{
    StringBuilder s = new StringBuilder();
    for(int i = 0; i <= count / text.Length; i++)
        s.Add(text);

    return(s.ToString().Substring(count));
}

答案 1 :(得分:2)

使用Enumerable.Repeat的可能解决方案。

const int TargetLength = 10;

string pattern = "xxx";

int repeatCount = TargetLength / pattern.Length + 1;

string result = String.Concat(Enumerable.Repeat(pattern, repeatCount).ToArray());

result = result.Substring(0, TargetLength);

Console.WriteLine(result);
Console.WriteLine(result.Length);

答案 2 :(得分:1)

我的Linqy(;))解决方案是创建一个扩展方法。 Linq是语言集成查询,为什么滥用?我很确定使用linq的select语句是可能的,因为你可以创建新的(匿名)对象,但为什么......?