2013-03-18 143 views
1

我需要更换双双引号,但不与空值替换领域。更换双人双引号

问:我怎么能代替双双引号,而不是取代空列?


原线

“” 山寨 “”, “新泽西州潘宁顿”, “”, “123456789”

预期成果

“山寨”, “新泽西州潘宁顿” ,“”,“123456789”


我创建了一个类,它会做的伎俩,但它取代所有双重双引号,包括空场:


我的代码结果

“山寨”, “新泽西州潘宁顿”, “” 123456789"

,你可以看到我的代码修复平房,但杀死空栏后,新泽西州有一个双引号。


公共类FixFileErrors

Public Shared Sub RemoveDoubleDoubleQuotes(ByVal FilePathandName As String) 

    Dim OriginalFile, RevisedFile, LineofText As String 

    OriginalFile = FilePathandName 
    RevisedFile = Replace(OriginalFile, ".txt", "revised.txt") 


    Dim srFileReader As System.IO.StreamReader 
    srFileReader = System.IO.File.OpenText(OriginalFile) 
    'Dim srFileWritter As System.IO.StreamWriter 
    Dim srFileWritter As New System.IO.StreamWriter(RevisedFile) 


    Do Until srFileReader.EndOfStream 
     LineofText = srFileReader.ReadLine 
     LineofText = ReplaceDoubleDoubleQuotes(LineofText) 
     srFileWritter.WriteLine(LineofText) 
     LineofText = Nothing 
    Loop 

End Sub 

Public Shared Function ReplaceDoubleDoubleQuotes(ByVal Line As String) As String 
    Dim NewLine As String 


    Dim strFindText As String = Chr(34) & Chr(34) 
    Dim strReplaceText As String = Chr(34) 

    NewLine = Replace(Line, strFindText, strReplaceText) 


    Return NewLine 

End Function 

末级

+0

首先得到空字符串,并用一些奇怪的字符串替换它说,“!〜!%$ @ %$ @%$%“,并在删除双引号后,将其还原。这会做什么? – David 2013-03-18 15:57:48

+0

看使用'String.Replace'方法[MSDN VB.NET与string.replace](http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx?cs-save-lang=1&cs-lang = vb#code-snippet-2) – MethodMan 2013-03-18 16:03:55

+0

大卫,它的工作....谢谢 – 2013-03-18 19:34:15

回答

1
Public Shared Function ReplaceDoubleDoubleQuotes(ByVal Line As String) As String 
    Dim NewLine As String 

    Dim doubleDoubleQuotes As String = Chr(34) & Chr(34) 
    Dim doubleQuote As String = Chr(34) 

    'Your original replacement 
    NewLine = Replace(Line, doubleDoubleQuotes, doubleQuote) 

    'Replacement to fix double-quotes between commas 
    NewLine = Replace(NewLine, "," & doubleQuote & ",", "," & doubleDoubleQuotes & ",") 

    Return NewLine 

End Function