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

vbCrLf

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

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

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

string s3 = 
@"我是一个多行文本
这是第二行";

能够看出C#在字符的赋值写法上十分灵活多变,然而你如果想用VB写一个多行文本,那可废了老劲了:post

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

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

Dim s3 As String = _
"我是一个多行文本" & vbCrLf & _
"这是第二行"

由于VB没有转义符,并且当时的VB也不支持字符串内的换行功能,因此只能采用 vbCrLf 来链接字符。
若是想要链接下一行的代码,还须要在行末添加一个 _ 字符,十分的繁琐!设计

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


VS语法糖

首先,请先肯定你所使用的VS版本,只要版本够新的话,VS的IDE就自动具有了多行文本的智能链接功能,因此下面的代码是能够直接运行的!xml

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

MsgBox(s)

然而须要注意的是,==这种语法只是VS的语法糖而已,并非合法的VB代码!==
你利用上面的代码用VBC的编译器是没法编译完成的,因此我还将介绍另外一个更神奇的多行文本方法!htm


String Tag

下面的方法仅适用于 .NET 3.5 之后的平台,低于该版本的.NET没法编译与识别。对象

代码以下:blog

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

MsgBox(s)

只需将字符串的声明符号 "..." 换成 <string>...</string> 这个XML标签,便可让咱们的VB代码支持多行文本!
须要注意的是,被 <string> 包裹的内容是包含空白符的,因此不要留下多余的空格与空行。
内部的文本支持HTML转义符,因此 < 符号须要以 &lt; 表示,> 须要以 &rt; 来表示。字符串

XML中的转义符get

字符 转义符
< &lt;
> &gt;
& &amp;
' &apos;
" &quot;

(其中只有 <& 是非法字符,须要严格转义,但仍是建议您将其余符号也一并转义。)

若是你的文本中包含大量须要转义的字符,则能够直接使用 XML CDATA 来包覆文本

Dim s As String = <string><![CDATA[&我是一个多行文本&
<我么得感情!>]]></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>
     <title>内嵌XML对象演示</title>
     <%= From x In xtags
         Select <xtag type=<%= x.prop %>><%= x.cont %></xtag>
     %>
     <endtag>结束XML</endtag>
 </xml>

MsgBox(linqxml.ToString)

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

输出的内容

<xml>
  <title>内嵌XML对象演示</title>
  <xtag type="属性">内容</xtag>
  <xtag type="test">hello world</xtag>
  <endtag>结束XML</endtag>
</xml>

===

本文首发于 https://blog.clso.fun/posts/2019-04-23/vb-net-multi-line-string.html

相关文章
相关标签/搜索