在Python中,我可以这样做:
>>> i = 3
>>> 'hello' * i
'hellohellohello'
如何在C#中将字符串与Python中的字符串相乘?我可以轻松地在for循环中执行它,但这会变得乏味且无表情。
最终我正在递归地写出控制台,每次调用都会递增缩进级别。
parent
child
child
child
grandchild
最简单的做"\t" * indent
。
答案 0 :(得分:19)
this post中有一种扩展方法。
public static string Multiply(this string source, int multiplier)
{
StringBuilder sb = new StringBuilder(multiplier * source.Length);
for (int i = 0; i < multiplier; i++)
{
sb.Append(source);
}
return sb.ToString();
}
string s = "</li></ul>".Multiply(10);
答案 1 :(得分:12)
答案 2 :(得分:11)
BCL没有内置的功能,但是LINQ可以轻松完成任务:
var multiplied = string.Join("", Enumerable.Repeat("hello", 5).ToArray());
答案 3 :(得分:11)
我是这样做的......
string value = new string(' ',5).Replace(" ","Apple");
答案 4 :(得分:1)
int indent = 5;
string s = new string('\t', indent);
答案 5 :(得分:1)
这样做的一种方法是 - 但它并不是那么好。
String.Join(String.Empty, Enumerable.Repeat("hello", 3).ToArray())
<强>更新强>
啊啊......我记得......为了追逐......
new String('x', 3)
答案 6 :(得分:1)
如何使用linq聚合...
var combined = Enumerable.Repeat("hello", 5).Aggregate("", (agg, current) => agg + current);
答案 7 :(得分:0)
C#中没有这样的陈述;你最好的选择可能是你自己的MultiplyString()函数。
答案 8 :(得分:0)
Per mmyers:
public static string times(this string str, int count)
{
StringBuilder sb = new StringBuilder();
for(int i=0; i<count; i++)
{
sb.Append(str);
}
return sb.ToString();
}
答案 9 :(得分:0)
只要你想重复一个字符,就可以使用一个String构造函数:
string indentation = new String('\t', indent);
答案 10 :(得分:0)
我认为您不能使用运算符重载扩展System.String,但您可以创建一个字符串包装类来执行此操作。
public class StringWrapper
{
public string Value { get; set; }
public StringWrapper()
{
this.Value = string.Empty;
}
public StringWrapper(string value)
{
this.Value = value;
}
public static StringWrapper operator *(StringWrapper wrapper,
int timesToRepeat)
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i < timesToRepeat; i++)
{
builder.Append(wrapper.Value);
}
return new StringWrapper(builder.ToString());
}
}
然后称之为......
var helloTimesThree = new StringWrapper("hello") * 3;
从...中获取价值
helloTimesThree.Value;
当然,理所当然的事情就是让你的函数跟踪并传入当前深度,并根据它在for循环中转出标签。
答案 11 :(得分:-1)
如果你需要3次字符串
string x = "hello";
string combined = x + x + x;