【发布时间】:2016-07-06 12:42:43
【问题描述】:
所以我有一个执行 for 循环的程序,逐个读取每个字符,并使用 case 语句将其替换为与该特定字母相关的四位数字。
我的问题是它没有读取换行符('\n'),我不知道如何解决这个问题。
这是我的代码:
for (int i = 0; i < inputTextBox.Text.Length; i++)
{
//Encryption
switch (inputTextBox.Text[i])
{
// I got rid of the rest of the cases
// as they are not relevant
case '\n':
encryptedString = encryptedString + "8024";
break;
}
}
并且由于它不接受新行作为字符,因此不会将其添加到 encryptedString 中。
这似乎是一个重复的问题,但我发现的其他帖子实际上处于完全不同的情况。
编辑 ---------------------------------- -------------------------------------------------- ---------------------------- 所以在调试之后,事实证明它实际上是在读取 '\n' 它只是在解码时没有将它写入字符串。
这是解码部分的代码:
for (int i = 0; i < readString.Length; i = i + 4)
{
//Decryption
switch (readString.Substring(i, 4))
{
case "8024":
decryptedString = decryptedString + "\n";
break;
}
}
inputTextBox.Text = decryptedString;
所以它达到了“decryptedString = decryptedString + “\n”;”行它只是由于某种原因没有在字符串中添加新行。为了确定,我也尝试了 '\n' 而不是 "\n"。
【问题讨论】:
-
嗯,很明显的问题是......你的文本框中是否有换行符(=是多行)?!旁注:使用 StringBuilder,连接字符串非常低效。
-
我做了一个快速测试,它对我有用(即它遇到了这种情况)。你试过调试吗?
'\n'是否符合您的要求?我投票决定将此作为“为什么这段代码不起作用”的主题。 -
@roryap 我现在已经编辑了这个问题,它实际上并没有在字符串中添加新行,所以希望你能提供帮助。
-
@AdrianoRepetti 是的,它是一个多行文本框,我已经尝试了换行符相对于其余内容的顺序。而且我仍然是初学者,所以感谢您的提示,我会考虑使用 StringBuilder。
标签: c# visual-studio switch-statement character newline