【问题标题】:Carriage Return & Line Feed acts as Char values回车和换行充当 Char 值
【发布时间】:2018-02-08 19:42:10
【问题描述】:

我有一个 HEX 到 RGB 转换器程序,它接受来自两个字段的字符串输入:一个用于 RGB 的文本框和一个用于 HEX 的文本框。每个框都从特定值中搜索特定的字符串长度。

例如,如果用户输入一个由 7 个字符组成的字符串“#0000FF”,则只处理代表 RGB 的 6 个值。 IE。 '#' 被替换为 ""。

最近我发现只输入 4 个有效字符,例如“000F”会导致崩溃。我在与字符串的 .Length 相关的 if 语句处设置了一个断点,并且似乎在该值中添加了 2 个字符。

所以在输入“0”之后,长度现在是 3,输入相当于“0\r\n”。键入“00”后,长度为 4,输入等效值为“00\r\n” - 依此类推。

有没有一种简单的方法可以删除字符串的“\r”和“\n”值?为什么回车和换行完全出现在文本框输入中?

【问题讨论】:

  • AcceptsReturn = false?
  • @Ctznkane525 两个文本框都设置为 false。
  • String.replace删除它。
  • @zx485 这是一个有效的解决方案——我认为它会更困难。如果您知道概念性问题的答案,我会将您的回答标记为答案。

标签: c# string winforms textbox


【解决方案1】:

最简单的方法是使用String.Replace 从字符串中删除\r\n 字符:

String test = textbox1.Replace("\r","").Replace("\n","");

这会从 TextBoxes 字符串中删除所有 CR 和 LF 字符。

【讨论】:

  • 你知道为什么首先出现 CR 和 LF 字符吗?
  • 因为在 Windows 中按下 'Enter'/'Return' 键确实会在键盘缓冲区中生成这两个字符(0Dh,0Ah)。这是一个约定。在 Linux 中,它只是 0Ah=LF。
猜你喜欢
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多