如何在C#中将字符串中的整个字符替换为相同字符?

6

例子:

string input = "super";
string rep = "a";

我希望输出与给定的stringlength相同的字符。输出应为"aaaaa"。 我不喜欢使用自己的FOR或While循环逻辑,有没有其他方法可以完成它。

8
这算是问题吗?你可以从使用字符串生成器到许多其他方法开始循环。在提问之前先做些研究。并且在期望别人回答之前,请告诉大家你尝试了什么。 - Shakti Prakash Singh
Fine @ Shakti Prakash Singh。问题永远不会没有合适的理由。请查看“答案”部分,您尝试过吗?我正在寻找从答案中获得优化方法。 - Thiru G
5
  1. 你没有提到你尝试了什么。
  2. 你没有提到你想要优化这个动作。请清晰地表达你的问题,并让其他人知道你已经尝试了什么,不要问我尝试了什么或者没有尝试什么。我不是在这里提问的人。通过没有进行适当的研究就提问,你只是浪费其他人的时间。
- Shakti Prakash Singh
1)我的问题很清楚,所以不需要额外的信息。 2)根据你的第一条评论,你建议使用循环逻辑,我同意,但是其他人的答案中提到了比自己的循环逻辑更好的方法,这就是我需要的。在你看来,我同意这个问题很简单(不是 :)),很酷... :) - Thiru G
2
如果您不理解@ShaktiPrakashSingh的评论,请阅读StackOverflow的提问指南:http://stackoverflow.com/questions/how-to-ask(特别是“做好功课”部分)。 - luiscubal
显示剩余2条评论
6个回答

27

使用构造函数

string output = new string('a', input.Length);

如果您想将一个真实的字符串重复n次,可以使用Enumerable.Repeat

string output = string.Join("", Enumerable.Repeat(rep, input.Length));

我使用String.Join方法来将每个字符串使用指定的分隔符连接在一起(在这种情况下没有分隔符)。


7

使用正则表达式

string input = "123";
string rep = "Abc";
string output = Regex.Replace(input , "(.)", rep)

通过使用LINQ
string output = string.Concat(input.Select(c => rep));

输出

AbcAbcAbc


我想捕获 . 的匹配可能是不必要的。 - Gowtham
@Gowtham 不要猜测,告诉为什么的原因? - Damith

3

仅供娱乐,这里有另一种方法:

new string(input.Select(c => 'a').ToArray());

0

另一种方式:

string input = "super";
string rep = "a";
var newStr = input.Select(x => rep);

0
如果你想要一个解决方案,它可能会很大但非常容易理解:
string output = "";
foreach(char a in input) {    // == for(int i = 0; i < input.length; i++) {
    output += rep;
}

我不知道如何使用构造函数。
这是一个非常简单的解决方案,但它只适用于字符。所以你不能重复字符串。


0
string op = "";
for(int i = 0; i < input.Length; i++)
   op += rep;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接