如何在VB中从字符串的开头和结尾删除双引号?

3

我收到一个字符串,有时候在开头和/或结尾有双引号。我需要没有引号的字符串。我尝试按照这个问题中的C#代码,但它无法编译:

Imports System

Module Program
    Sub Main(args As String())
        Dim text As String = """Text"""
        Console.WriteLine("Original value: " & text)

        Dim trimmed As String = text.Trim('"')
        Console.WriteLine("Trimmed value: " & trimmed)
    End Sub
End Module

去掉最后两行,这将打印:

Original value: "Text"

我希望最终的代码能够打印出:
Original value: "Text"
Trimmed value: Text

我收到的编译时错误是:

Program.vb(9,55):错误 BC30198:预期“)”。

(第 9 行是 Trim 调用。)

我该如何更改代码以编译和修剪引号?

2个回答

6
在C#中,字符字面量中的"不需要转义。 VB字符字面量的语法有点不同。它类似于字符串字面量,但带有一个C后缀。要使用双引号,您需要在字符字面量中将其加倍,就像在字符串字面量中一样。这是您的原始示例,但已修复:
Imports System

Module Program
    Sub Main(args As String())
        Dim text As String = """Text"""
        Console.WriteLine("Original value: " & text)
        
        Dim trimmed As String = text.Trim(""""C)
        Console.WriteLine("Trimmed value: " & trimmed)
        
    End Sub
End Module

输出现在已经符合要求。

请注意,这并不能解决字符串内部的双引号问题,因为 Trim 只会查看开头和结尾。如果要删除所有的双引号,应该使用 String.Replace。以下是一个示例:

Imports System

Module Program
    Sub Main(args As String())
        Dim text As String = """Before middle quote""After middle quote"""
        Console.WriteLine("Original value: " & text)

        Dim trimmed As String = text.Trim(""""C)
        Console.WriteLine("Trimmed value: " & trimmed)

        Dim replaced As String = text.Replace("""", "")
        Console.WriteLine("Replaced value: " & replaced)
    End Sub
End Module

输出:

Original value: "Before middle quote"After middle quote"
Trimmed value: Before middle quote"After middle quote
Replaced value: Before middle quoteAfter middle quote

当然,您可以用一个字符串或单引号代替双引号。


3
在VB中,记住要使用多少引号很麻烦。我发现ControlChars.Quote很方便。
    Dim text As String = """Text"""
    text = text.Trim(ControlChars.Quote)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接