日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
VB.NET字符串轉(zhuǎn)義詳細(xì)概念解析

雖然說(shuō)VB.NET中有很多東西是其他語(yǔ)言沒(méi)有的,但是同時(shí)其他語(yǔ)言具有的一些特點(diǎn),這款編程語(yǔ)言也是不具備的。不過(guò)我們可以通過(guò)其他的方式來(lái)實(shí)現(xiàn)。比如,眾所周知,VB中沒(méi)有C#的字符串轉(zhuǎn)義語(yǔ)法。#t#

榆樹(shù)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!

C#中可以寫(xiě)

  1. string s = "This is a 
    string with newline.\n"; 

而VB.NET字符串轉(zhuǎn)義的只能寫(xiě)

  1. Dim s = "This is a string 
    with newline." & vbLf 

人們渴望一個(gè)和C#中的"@"字符串正好相反的語(yǔ)法:

 
 
 
  1. string s = @"This is a string 
    with '\n' literal.\n";Dim s = 
    @"This is a string with newline.\n" 

但是,這種VB.NET字符串轉(zhuǎn)義語(yǔ)法還沒(méi)有被加入。

于是,我通過(guò)使用擴(kuò)展函數(shù),實(shí)現(xiàn)了比較接近的語(yǔ)法。

 
 
 
  1. Dim s = "This is a string 
    with newline.\n".Descape 

另外,還對(duì)String.Format進(jìn)行了類(lèi)似處理

 
 
 
  1. Dim s2 = "This is a 
    string that is {0}".
    Formats("formated.") 

VB.NET字符串轉(zhuǎn)義的具體實(shí)現(xiàn)如下:

 
 
 
  1. '  
  2. ' File: StringDescape.vb  
  3. ' Description: VB.Net字符串轉(zhuǎn)義語(yǔ)法糖 
    < Visual Basic 9> 
  4. ' Version: 2008.09.28.  
  5. ' (cc) F.R.C. 按照 Creative 
    Commons Public Domain Dedication L
    icense 捐獻(xiàn)  
  6. ' http://creativecommons.org/
    licenses/publicdomain/  

 
 
 
  1. Imports System  
  2. Imports System.Collections.Generic  
  3. Imports System.Text  
  4. Imports System.Text.RegularExpressions  
  5. Imports System.Runtime.CompilerServices  
  6. Imports Microsoft.VisualBasic 

 
 
 
  1. /**/''' < summary>字符串轉(zhuǎn)義< /summary> 
  2. Public Module StringDescapeModule StringDescape  
  3. /**/''' < summary>字符串反轉(zhuǎn)義函數(shù)< /summary> 
  4. ''' < remarks> 
  5. ''' \0 與null \u0000 匹配  
  6. ''' \a 與響鈴(警報(bào))\u0007 匹配   
  7. ''' \b 與退格符 \u0008 匹配  
  8. ''' \t 與 Tab 符 \u0009 匹配   
  9. ''' \r 與回車(chē)符 \u000D 匹配  
  10. ''' \v 與垂直 Tab 符 \u000B 匹配  
  11. ''' \f 與換頁(yè)符 \u000C 匹配  
  12. ''' \n 與換行符 \u000A 匹配  
  13. ''' \e 與 Esc 符 \u001B 匹配  
  14. ''' \x?? 與 \u00?? 匹配  
  15. ''' \u???? 與對(duì)應(yīng)的Unicode字符對(duì)應(yīng)  
  16. ''' < /remarks> 
  17. < Extension()> Public Function Descape
    ()Function Descape(ByVal This As 
    String) As String  
  18. Dim m = r.Match(This)  
  19. If Not m.Success Then Throw New 
    InvalidCastException 

 
 
 
  1. Dim ss As New SortedList(Of
     Integer, String)  
  2. For Each c As Capture In m.Groups.
    Item("SingleEscape").Captures  
  3. ss.Add(c.Index, SingleEscapeDict
    (c.Value))  
  4. Next  
  5. For Each c As Capture In m.Groups.
    Item("UnicodeEscape").Captures  
  6. ss.Add(c.Index, ChrW(CInt("&H" 
    & c.Value)))  
  7. Next  
  8. For Each c As Capture In m.Groups.
    Item("ErrorEscape").Captures  
  9. Throw New ArgumentException("
    ErrorEscape: Ch " & (c.Index + 1) 
    & " " & c.Value)  
  10. Next  
  11. For Each c As Capture In m.Groups.
    Item("Normal").Captures  
  12. ss.Add(c.Index, c.Value)  
  13. Next  
  14. Dim sb As New StringBuilder  
  15. For Each s In ss.Values  
  16. sb.Append(s)  
  17. Next  
  18. Return sb.ToString  
  19. End Function 

 
 
 
  1. /**/''' < summary>將指定的 String 
    中的格式項(xiàng)替換為指定的 Object 實(shí)例的值
    的文本等效項(xiàng)。< /summary> 
  2. < Extension()> Public Function Formats
    ()Function Formats(ByVal This As String, 
    ByVal arg0 As Object) As String  
  3. Return String.Format(This, arg0)  
  4. End Function  
  5. /**/''' < summary>將指定的 String 
    中的格式項(xiàng)替換為兩個(gè)指定的 Object 實(shí)例的
    值的文本等效項(xiàng)。< /summary> 
  6. < Extension()> Public Function Formats
    ()Function Formats(ByVal This As String,
     ByVal arg0 As Object, ByVal arg1 As
     Object) As String  
  7. Return String.Format(This, arg0, arg1)  
  8. End Function  
  9. /**/''' < summary>將指定的 String 中的
    格式項(xiàng)替換為三個(gè)指定的 Object 實(shí)例的值的文本
    等效項(xiàng)。< /summary> 
  10. < Extension()> Public Function Formats
    ()Function Formats(ByVal This As String, 
    ByVal arg0 As Object, ByVal arg1 As Object, 
    ByVal arg2 As Object) As String  
  11. Return String.Format(This, arg0, arg1, arg2)  
  12. End Function  
  13. /**/''' < summary>將指定 String 中的格式
    項(xiàng)替換為指定數(shù)組中相應(yīng) Object 實(shí)例的值的文
    本等效項(xiàng)。< /summary> 
  14. < Extension()> Public Function Formats()
    Function Formats(ByVal This As String, 
    ByVal ParamArray args As Object()) As String  
  15. Return String.Format(This, args)  
  16. End Function  
  17. /**/''' < summary>將指定 String 中的格式項(xiàng)
    替換為指定數(shù)組中相應(yīng) Object 實(shí)例的值的文本等效項(xiàng)。
    指定的參數(shù)提供區(qū)域性特定的格式設(shè)置信息。< /summary> 
  18. < Extension()> Public Function Formats()Function 
    Formats(ByVal This As String, ByVal provider 
    As IFormatProvider, ByVal ParamArray args 
    As Object()) As String  
  19. Return String.Format(provider, This, args)  
  20. End Function 

 
 
 
  1. Private ReadOnly Property SingleEscapeDict()
    Property SingleEscapeDict() As Dictionary
    (Of String, String)  
  2. Get  
  3. Static d As Dictionary(Of String, String)  
  4. If d IsNot Nothing Then Return d  
  5. d = New Dictionary(Of String, String)  
  6. d.Add("\", "\") 'backslash  
  7. d.Add("0", ChrW(0)) 'null  
  8. d.Add("a", ChrW(7)) 'alert (beep)  
  9. d.Add("b", ChrW(8)) 'backspace  
  10. d.Add("f", ChrW(&HC)) 'form feed  
  11. d.Add("n", ChrW(&HA)) 'newline (lf)  
  12. d.Add("r", ChrW(&HD)) 'carriage return (cr)   
  13. d.Add("t", ChrW(9)) 'horizontal tab   
  14. d.Add("v", ChrW(&HB)) 'vertical tab  
  15. Return d  
  16. End Get  
  17. End Property  
  18. Private ReadOnly Property SingleEscapes
    ()Property SingleEscapes() As String  
  19. Get  
  20. Static s As String  
  21. If s IsNot Nothing Then Return s  
  22. Dim Chars As New List(Of String)  
  23. For Each c In "\0abfnrtv"  
  24. Chars.Add(Regex.Escape(c))  
  25. Next  
  26. s = "\\(?< SingleEscape>" & String.
    Join("|", Chars.ToArray) & ")"  
  27. Return s  
  28. End Get  
  29. End Property  
  30. Private UnicodeEscapes As String = 
    "\\[uU](?< UnicodeEscape>[0-9A-Fa-f]{4})
    |\\x(?< UnicodeEscape>[0-9A-Fa-f]{2})" 
  31. Private ErrorEscapes As String = 
    "(?< ErrorEscape>\\)" 
  32. Private Normal As String = "(?< Normal>.)" 
  33. Private r As New Regex("^" & "(
    " & SingleEscapes & "|" & Unicode
    Escapes & "|" & ErrorEscapes & "|" & 
    Normal & ")*" & "$", RegexOptions.
    ExplicitCapture)  
  34. End Module 

希望大家可以理解VB.NET字符串轉(zhuǎn)義這段代碼編寫(xiě)方法。


新聞標(biāo)題:VB.NET字符串轉(zhuǎn)義詳細(xì)概念解析
分享URL:http://www.5511xx.com/article/cceeged.html