【问题标题】:Displaying a String Multiple times using * operator [duplicate]使用 * 运算符多次显示字符串 [重复]
【发布时间】:2011-09-12 20:34:21
【问题描述】:

可能重复:
Can I “multiply” a string (in C#)?

有没有一种简单的方法可以使用str * 2 之类的东西多次显示字符串?

也就是说,有没有办法:

int numTimes = 500;
String str = "\n";
String body = ""
for (int i = 0; i < numTimes; i++)
{
    body = "Hello" + str;
}

不需要for循环?

【问题讨论】:

标签: c# asp.net c#-4.0


【解决方案1】:

不。没有这样的运营商。

你可以的

body = "Hello" + String.Join("", Enumerable.Range(0, numTimes).Select(i => str));

但这仍在内部循环。

【讨论】:

  • @Gabe 返回变量str
  • 我明白了,我好像看错了你的帖子。我期待看到Enumerable.Repeat,所以我不明白为什么会有Select。显然,既然您使用的是Enumerable.Range,那么您确实需要Select
  • @Gabe 我很少使用Enumerable.Repeat() 我忘记了它的存在。这是一种非常合适的情况。
  • 我想我应该补充一点,String.Concat(...) 比 `String.Join("", ...) 更简洁一些
【解决方案2】:

答案是否定的,而不是简单地隐藏循环或其他一些人为的例子。

【讨论】:

    【解决方案3】:

    是和不是。 不,不是开箱即用。 是的,您可以制作一个扩展方法来非常轻松地做到这一点。 在此处查看有关字符串扩展方法的线程C# String Operator Overloading

    它仍然是循环的,所以如果可能的话,你应该使用 StringBuilder,而不是纯粹的串联,特别是如果你不知道它会循环多少次。字符串是不可变的,因此 500 个循环是内存中的大量临时字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      相关资源
      最近更新 更多