我有一个文本框控件,允许输入按钮的用户输入ADdresses或其他人口统计信息等详细信息。由于地址的默认值如下:
Address 1
Address 2
City, st
Zip
我想知道是否有办法判断Enter键是否用于在此处创建新行?我环顾四周,目前唯一的一个是检查VB中的vbCrLf但是我没有看到它在代码中选择它。
此测试数据类似于下面的
123 N Street
S Test Street
Test City, XX
91883
下面的代码是我试图替换任何返回托架并用空格替换
Text.Replace(vbCrLf, " ")
除非上述测试值之间存在实际空间,否则此vbCrLf是否会取回回车符?
答案 0 :(得分:4)
如果您使用的是MultiLine
文本框(就像您的示例中所示),则您不需要搜索换行符并将其替换为空格。
您可以简单地使用Lines属性,其中每行存储与另一行分开,然后使用字符串Join方法创建单行字符串
Dim singleLine = string.Join(" ", myTextBox.Lines)
当然,如果您只是想知道是否有换行符,那么只需检查Lines数组的Length属性
答案 1 :(得分:2)
vbCrLf实际上是指两个字符,一个回车符(13)和一个换行符(10)。
我会分别搜索和替换每个。它不是必需的(因为替换将同时处理两个字符),但可以捕获用户剪切和粘贴信息的实例,而不是直接在文本框中键入。
Text = Text.Replace(vbCr, " ")
Text = Text.Replace(vbLf, " ")
或
Text = Text.Replace(vbCr, " ").Replace(vbLf, " ")
https://msdn.microsoft.com/en-us/library/microsoft.visualbasic.constants.vbcrlf(v=vs.110).aspx
答案 2 :(得分:2)
Replace()
函数确实会正确地检测并替换目标中所有出现的目标 - 无论是前导空格还是尾随空格都无关紧要。
但是,请注意String
个对象是不可变的,并且在实例化后无法更改。因此,Replace()
不会修改现有对象,而是返回 new 字符串作为结果。
要实际查看函数调用的结果,您需要按以下方式执行操作:
newString = Text.Replace(vbCrLf, " ")
答案 3 :(得分:1)
我花了很多时间来解决这个问题,我遇到的解决方案是:
text = text.Replace(" ", ControlChars.CrLf)
很抱歉不记得我找到解决方案的地方,但如果我记得它,我会在这里发布链接。