2017-10-19 156 views
0

我正在尝试构建一个包含换行符的字符串,并且正在获取最奇怪的结果。这个字符串将被存储在SQL数据库中,以便以后用作电子邮件的一部分。我的代码如下:vb.net字符串concat将vbCrlf文字添加到字符串

Dim strBody As String = "Andy," & Environment.NewLine 

当我在调试会话期间检查的strBody的价值,它是这样的:

"Andy," & vbCrlf 

我当然希望是更喜欢:

"Andy," 

已知,后面是隐藏字符。

归根结底,问题是什么?当我包括strBody我的SQL语句insert的一部分,它的字面数值显示为我的SQL内以下insert声明:

'Andy," & vbCrLf & "' 

我使用此代码昨天它运行良好。我在同一个asp.net项目的另一个函数内使用类似的代码,它工作正常。我曾尝试使用+而不是&,我试过用vbCrLf代替Environment.NewLine,我试过用stringbuilder,我试过用string.concat。所有结果与& vbCrLf包含在strBody中的结果相同。

有没有我意外改变的设置?

我知道这是一个奇怪的...任何帮助,非常感谢。

+1

这实际上是不可能的!如果这是真的,那么你已经打破了宇宙! - 你确定它是真的** _部分字符串吗?您是否尝试将其写入文件或在消息框中显示它?请记住,当您在_ **调试模式下检查变量时显示的内容** _与最终字符串不一样。 –

+1

你能给我们一个显示问题的截图吗? –

回答

0

这仅仅是Visual Studio中显示你有新行字符( vbCrLf或Environment.NewLine)。如果您在任何地方使用该字符串,它将被正确存储。

+0

谢谢。经过一番调查后,我能够确认Visual Studio显示的字符串就像我上面提到的那样,以便隐藏的字符可见。当它实际存储在SQL数据库中时,它是正确的。我的问题是我的字符串中有一个意外的单引号,导致SQL命令失败。当我开始调查时,我专注于VbCrlf,因为它看起来不对;我正确删除了存储在数据库中的单引号和sting。 – Andy

0

如果你只需要在数据库中插入Environment.NewLine,你可以这样做。

Dim a As String = """ & Environment.NewLine & """ 
Dim strBody As String = String.Format("Andy,{0}", a) 

'"Andy," & Environment.NewLine & ""