VB.NET 定义多行文本字符的几种方式

在 .NET 刚刚推出的时候,VB作为一款被微软用来“衬托”C#的语言,在许多细节设计上远不如C#方便。
比如在C#中写一个多行文本,就有各种方式:

string s1 = “我是一个多行文本\n这是第二行”;

string s2 = @“我是一个多行文本
这是第二行”;

string s3 =
@“我是一个多行文本
这是第二行”;
可以看出C#在字符的赋值写法上十分灵活多变,然而你若是想用VB写一个多行文本,那可废了老劲了:

Dim s1 As String = “我是一个多行文本” & vbCrLf & “这是第二行”

Dim s2 As String = “我是一个多行文本” & vbCrLf & _
“这是第二行”

Dim s3 As String = _
“我是一个多行文本” & vbCrLf & _
“这是第二行”
因为VB没有转义符,而且当时的VB也不支持字符串内的换行功能,所以只能采用 vbCrLf 来连接字符。
如果想要连接下一行的代码,还需要在行末添加一个 _ 字符,十分的繁琐!

可是别忘了,现在都9102年了,VB早已经克服了不支持多行文本的缺点!
让我们看看现在如何利用VB的语法来定义多行文本吧!

VS语法糖
首先,请先确定你所使用的VS版本,只要版本够新的话,VS的IDE就自动具备了多行文本的智能连接功能,所以下面的代码是可以直接运行的!

Dim s As String =
“我是一个多行文本
这是第二行”

MsgBox(s)
然而需要注意的是,这种语法只是VS的语法糖而已,并不是合法的VB代码!
你利用上面的代码用VBC的编译器是无法编译完成的,所以我还将介绍另一个更神奇的多行文本方法!

String Tag
下面的方法仅适用于 .NET 3.5 以后的平台,低于该版本的.NET无法编译与识别。

代码如下:

Dim s As String = 我是一个多行文本
这是第二行

MsgBox(s)
只需将字符串的声明符号 “…” 换成 … 这个XML标签,即可让我们的VB代码支持多行文本!
需要注意的是,被 包裹的内容是包含空白符的,所以不要留下多余的空格与空行。
内部的文本支持HTML转义符,所以 < 符号需要以 < 表示,> 需要以 &rt; 来表示。

XML中的转义符

字符 转义符
< <

>
& &
’ ’
" "
(其中只有 < 与 & 是非法字符,需要严格转义,但还是建议您将其他符号也一并转义。)

如果你的文本中包含大量需要转义的字符,则可以直接使用 XML CDATA 来包覆文本

Dim s As String = ]]>

Msgbox(s)
其中被CDATA所包裹的文本可以自由使用各种需要转义的特殊字符,除了结尾的]]>之外!

LINQ XML
最后的最后,再来介绍一个小技巧:

’ 定义一个结构原型
Structure xtag
Sub New(ByVal p As String, ByVal c As String)
Me.prop = p
Me.cont = c
End Sub
Dim prop As String
Dim cont As String
End Structure

Dim xtags As xtag() = {New xtag(“属性”, “内容”), New xtag(“test”, “hello world”)}
’ 创建一个LINQ XML元素
Dim linqxml As Xml.Linq.XElement =

内嵌XML对象演示
<%= From x In xtags
Select ><%= x.cont %>
%>
结束XML

MsgBox(linqxml.ToString)
原来在VB.NET中的XML标签(并非一定得是xml作为根标签)可以直接定义一个Linq.XElement对象,而且其内部可以利用LINQ + ASP.NET的语法对元素进行操作和赋值,十分的方便!

输出的内容

内嵌XML对象演示 内容 hello world 结束XML [深圳网站建设](https://www.sz886.com/) https://www.sz886.com/

你可能感兴趣的:(.net程序员)