IT이야기

VB.NET에서 축 어적 문자열 리터럴을 수행하는 방법

cyworld 2021. 3. 27. 22:53
반응형

VB.NET에서 축 어적 문자열 리터럴을 수행하는 방법은 무엇입니까?


VB.NET에서 축 어적 문자열 리터럴을 어떻게 수행 합니까?

이는 다음과 같이 C #에서 수행됩니다.

String str = @"c:\folder1\file1.txt";

즉, 백 슬래시는 이스케이프 문자가 아니라 문자 그대로 처리됩니다.

이것이 VB.NET에서 어떻게 이루어 집니까?


VB.NET의 모든 문자열 리터럴은 그대로 문자열 리터럴입니다. 간단히 쓰기

Dim str As String = "c:\folder1\file1.txt"

VB.NET은 인라인 제어 문자를 지원하지 않습니다. 따라서 백 슬래시는 항상 문자 그대로 해석됩니다.

이스케이프해야하는 유일한 문자는 C # 에서처럼 두 배로 이스케이프되는 큰 따옴표입니다.

Dim s As String = """Ahoy!"" cried the captain." ' "Ahoy!" cried the captain.

@MarkJ는 이미 @Jon Skeet의 게시물에서 이것을 지적했습니다.

VB.Net은 인라인 XML 리터럴을 통해 축 어적으로 사용해야하는 경우이 가증스러운 기능을 지원합니다 .

문자열 캐싱을 고려하십시오! 매번 이것을 평가하지 마십시오 ...

Imports System.Xml.Linq

Dim cmdText as String = <![CDATA[
SELECT 
Field1, Field2, Field3 
FROM table
WHERE Field1 = 1
]]>.Value

[2015-Jan-5 편집]

VB14 / VS2015는 헛소리없이 여러 줄 문자열을 지원합니다.

Dim cmdText as String = "
SELECT 
Field1, Field2, Field3 
FROM table
WHERE Field1 = 1"

VB는 \어쨌든 이스케이프 문자로 취급하지 않으므로 문자열을 일반 리터럴로 작성할 수 있습니다.

Dim str = "c:\folder1\file1.txt"

내가 아는 한, VB는 축어 문자열 리터럴의 다른 주요 목표를 달성 할 수있는 방법이 없습니다. 즉, 여러 줄을 허용하는 것입니다.이를 위해 사용해야 VbCrLf합니다 . (또는 Environment.NewLine물론-요구 사항에 따라 다릅니다. 시스템 별 줄 구분 기호를 원할 때도 있고 특정 프로토콜에서 요구하는 특정 줄 구분 기호를 원할 수도 있습니다.)

편집 : VB의 최신 버전은 문자열 리터럴에서 여러 줄을 지원합니다.


확실하지 않은 경우 다음 비교 페이지를 참조하십시오. http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

VB.NET

 'No string literal operator     
 Dim filename As String = "c:\temp\x.dat"

씨#

// String literal 
string filename = @"c:\temp\x.dat";  
string filename = "c:\\temp\\x.dat";  

VB.NET은 "\"를 이스케이프 문자로 인식하지 않습니다. 그러나 추가 솔루션을 사용할 수 있습니다 (예 : 연결보다 느리게 작동한다는 점을 고려하십시오).

Dim s As String = Regex.Unescape("c:\\folder1\\file1.txt\nc:\\folder1\\file2.txt\nc:\\folder1\\file3.txt")

이 경우 문자열 "s"에는 세 줄이 포함됩니다. 기호 "\"는 정규식 메서드 Unescape ()에서 다음 "\"를 보호하므로 매번 두 번 반복됩니다.

"\ n"은 C #과 유사한 "개행"특수 문자입니다. "\ t"(탭) 등을 사용할 수도 있습니다.


VB XML 리터럴은 .vbhtml 면도기 페이지에서 작동하지 않습니다. 다음 릴리스에서 변경되기를 바랍니다.


Dim sourceText As String =  
    <string>  


    Imports Microsoft.VisualBasic  
    Imports System  
    Imports System.Collections  
    Imports Microsoft.Win32  
    Imports System.Linq  
    Imports System.Text  
    Imports Roslyn.Compilers  
    Imports System.ComponentModel  
    Imports System.Runtime.CompilerServices  
    Imports Roslyn.Compilers.VisualBasic  

    Namespace HelloWorld  
      Module Program  
        Sub Main(args As String())  
          Console.WriteLine("Hello, World!")  
        End Sub  
      End Module  
    End Namespace  
</string>  

참조 URL : https://stackoverflow.com/questions/13155449/how-to-do-a-verbatim-string-literal-in-vb-net

반응형