【问题标题】:C# - Reading NewLine characters from reading a string character by characterC# - 通过逐个字符读取字符串来读取换行符
【发布时间】: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


【解决方案1】:

我在解码换行符时用“System.Environment.NewLine”替换了“\n”,它解决了问题。

【讨论】:

  • 很高兴您自己找到了它
【解决方案2】:

尝试先用这个Regex.Replace(inputTextBox.Text, "\r\\D\n?|\n\\D\r?", "\n"); 替换新行
编辑:你确定它没有用吗?
例如,如果加密字符串是:

第一个字符串
第二
第三
第四

使用这个:

encryptedString = Regex.Replace(encryptedString, "\r\\D\n?|\n\\D\r?", "\n");
encryptedString = encryptedString.Replace("\n", "8024");

会让 encryptedString = First string8024second80243rd8024fourth 是你想要的吗?

【讨论】:

    猜你喜欢
    • 2014-11-22
    • 1970-01-01
    • 2010-11-08
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多