如何判断回车是否在我的字符串中?

时间:2015-04-06 15:07:08

标签: vb.net winforms

我有一个文本框控件,允许输入按钮的用户输入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是否会取回回车符?

4 个答案:

答案 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)

很抱歉不记得我找到解决方案的地方,但如果我记得它,我会在这里发布链接。