将两个字符串连接到一个文本框中
Concatenating two strings into a Textbox
我刚刚学习了密码学的基础知识,我想给
其中一种方法叫曲折换位试试看。
这个方法所做的就是组合整个句子并给它们从零开始的索引。
然后它将偶数索引字符分隔到一个数组中,将奇数字符分隔到另一个数组中。
当我将两个数组转换为字符串然后将它们放在文本框中时,只显示第一个字符串。
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;
}
问题出在字符数组的大小上。我通过 <br/>
解决了它
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;
但是,如果您的纯文本字符串有点长(比如 10、20 个字符)- 更好的实现方式是使用 StringBuilder
:
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();
使用 StringBuilder
class 是更优雅的方法,而不是创建 String
.
的 2 个实例
我刚刚学习了密码学的基础知识,我想给
其中一种方法叫曲折换位试试看。
这个方法所做的就是组合整个句子并给它们从零开始的索引。
然后它将偶数索引字符分隔到一个数组中,将奇数字符分隔到另一个数组中。
当我将两个数组转换为字符串然后将它们放在文本框中时,只显示第一个字符串。
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;
}
问题出在字符数组的大小上。我通过 <br/>
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;
但是,如果您的纯文本字符串有点长(比如 10、20 个字符)- 更好的实现方式是使用 StringBuilder
:
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();
使用 StringBuilder
class 是更优雅的方法,而不是创建 String
.