Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将两个字符串连接到文本框中_C#_Windows Forms Designer - Fatal编程技术网

C# 将两个字符串连接到文本框中

C# 将两个字符串连接到文本框中,c#,windows-forms-designer,C#,Windows Forms Designer,我刚刚学习了密码学的基础知识,我想 一种称为“之字形转置”的方法是一种尝试。 这个方法所做的就是组合整个句子,并从零开始给它们索引。 然后,它将偶数索引字符分隔为一个数组,将奇数索引字符分隔为另一个数组。 当我将两个数组转换为字符串,然后将它们放在文本框中时,只显示第一个字符串 private void ZigzagBu_Click(object sender, EventArgs e) { string s = PlaintextTB.Text; s = s.Replace("

我刚刚学习了密码学的基础知识,我想 一种称为“之字形转置”的方法是一种尝试。
这个方法所做的就是组合整个句子,并从零开始给它们索引。
然后,它将偶数索引字符分隔为一个数组,将奇数索引字符分隔为另一个数组。
当我将两个数组转换为字符串,然后将它们放在文本框中时,只显示第一个字符串

private void ZigzagBu_Click(object sender, EventArgs e) {
    string s = PlaintextTB.Text;
    s = s.Replace(" ","");

    char[] whole = s.ToCharArray();
    char[] even = new char[whole.Length];
    char[] odd = new char[whole.Length];

    int evenIndex = 0;
    int oddIndex = 0;

    for(int i =0;i<whole.Length;i++) {
        if (i % 2 == 0) {
            even[evenIndex] = whole[i];
            evenIndex++;
        }
        else {
            odd[oddIndex] = whole[i];
            oddIndex++;
        }
    }

    s = new String(even);
    string m = new String(odd);

    CiphertextTB.Text = s+m;
}
private void ZigzagBu_单击(对象发送者,事件参数e){
字符串s=明文TB.Text;
s=s。替换(“,”);
char[]整=s.ToCharArray();
char[]偶数=新字符[整段长度];
char[]奇数=新字符[整段长度];
指数=0;
int-odddindex=0;

对于(inti=0;i问题在于字符数组的大小。我通过

char[] even = new char[whole.Length/2]; 
char[] odd = new char[whole.Length/2];

实际上,你的代码太复杂了。 使用简单字符串也可以完成同样的操作,无需转换为字符数组:

var s = "0123456";
var even = "";
var odd = "";
for(int i=0; i<s.Length;i++)
{
    if(i % 2 == 0)
    {
        even  += s[i];
    }
    else
    {
        odd += s[i];
    }
}
var result = even + odd;

使用
StringBuilder
类比创建
String
的两个实例更优雅


实现:

它在结尾处被分配了空字符。啊,我忘记了字符数组的美妙之处。实际上是这样。@Arey很乐意帮助:-)
var s = "0123456";
var even = new StringBuilder();
var odd = StringBuilder();
for(int i=0; i<s.Length;i++)
{
    if(i % 2 == 0)
    {
        even.Append(s[i]);
    }
    else
    {
        oddAppend(s[i]);
    }
}
var result = even.Append(odd.ToString()).ToString();