我在开发应用程序时遇到了一个问题。
基本上,
我有一个固定的字符串,比如“iHaveAdream”
现在,为了固定长度的目的,我希望用户插入另一个字符串,然后将固定字符串的每个字符与用户插入的字符串的每个字符连接起来。
例如
用户插入“byebye”
那么输出将是:
“Ibhyaevbyedream”。
如何做到这一点?
我试过使用string.concat和string.join,在for语句中,运气不佳。
最佳答案
一个节省内存的选项是使用字符串生成器,因为原始字符串和用户输入都可能相当大。正如kris所提到的,可以将stringbuilder的容量初始化为两个字符串的组合长度。
void Main()
{
var start = "IHaveADream";
var input = "ByeBye";
var sb = new StringBuilder(start.Length + input.Length);
for (int i = 0; i < start.Length; i++)
{
sb.Append(start[i]);
if (input.Length >= i + 1)
sb.Append(input[i]);
}
sb.ToString().Dump();
}
这只能安全地说明输入字符串的长度比起始字符串短或相等。如果输入字符串较长,则需要将较长的长度作为for循环迭代的终点,并检查每个数组索引是否不超出边界。
void Main()
{
var start = "IHaveADream";
var input = "ByeByeByeByeBye";
var sb = new StringBuilder(start.Length + input.Length);
var length = start.Length >= input.Length ? start.Length : input.Length;
for (int i = 0; i < length; i++)
{
if (start.Length >= i + 1)
sb.Append(start[i]);
if (input.Length >= i + 1)
sb.Append(input[i]);
}
sb.ToString().Dump();
}