C# 连接字符串或字符数组

标签 c# arrays string concatenation

我在开发应用程序时遇到问题。 基本上, 我有一个固定的字符串,比方说“IHaveADream”

我现在想让用户插入另一个字符串,以达到固定长度的目的,然后将固定字符串的每个字符与用户插入的字符串的每个字符连接起来。 例如 用户插入“ByeBye” 那么输出将是: “IBHyaevBeyAeDream”。

如何实现?

我已经尝试在 for 语句中使用 String.Concat 和 String.Join,但没有成功。

最佳答案

一个节省内存的选择是使用字符串生成器,因为原始字符串和用户输入都可能相当大。正如 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();
}

关于C# 连接字符串或字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31091582/

相关文章:

c# - 回发后如何保持 DropDownList1 的选定值?

c - 查找二进制文件 C 中出现频率最高的字符串

c# - FxCop 对我在 NON-Team System Visual Studio 的资源中使用格式字符串提出异议

c# - 强制任务在当前线程上继续?

c - 接收到数组的浮点指针 malloc 数组

java - for 循环中的字符串文字与 for 循环中的字符串生成器

string - oracle中如何将csv转换为表格

javascript - 提取字符串结尾 - Javascript

c# - 如何为组件/脚本创建泛型池系统?

java - 访问 wobblyMethod() 中的局部变量