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



我有一个文本框控件,允许输入按钮的用户输入详细信息,如ADdress或其他人口统计信息。由于地址的默认值如下:

Address 1
Address 2
City, st
Zip

我想知道是否有一种方法可以判断Enter键是否用于在此处创建新行?我环顾四周,目前唯一的办法是在VB中检查vbCrLf,但我没有看到它在代码中发现这一点。

这方面的测试数据类似于

123 N Street
S Test Street
Test City, XX
91883

下面的代码是我试图替换任何返回车厢并用空格替换的代码

Text.Replace(vbCrLf, " ")

除非上述测试值之间存在实际空间,否则此vbCrLf不会拾取回车吗?

如果您使用的是MultiLine文本框(从示例中可以看出),那么您不需要搜索换行符并用空格替换它们。

您可以简单地使用Lines属性,其中每一行都是分开存储的,然后使用字符串Join方法创建单行字符串

Dim singleLine = string.Join(" ", myTextBox.Lines)

当然,如果您只是想知道是否有换行符,那么只需检查Lines数组的Length属性即可

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

Replace()函数确实会正确地检测到目标的所有出现,并用替换替换-无论是否有前导空格或尾随空格。

但是,请考虑String对象是不可变的,并且在实例化后不能更改。因此,Replace()不修改现有对象,而是返回一个字符串作为其结果。

要真正看到函数调用的结果,您需要按照以下几行操作:

newString = Text.Replace(vbCrLf, " ")

我花了相当长的时间来解决这个问题,我遇到的解决方案是:

text = text.Replace(" ", ControlChars.CrLf)

对不起,我不记得在哪里找到了解决方案,但如果我记得,我会在这里发布链接。

最新更新