Character looks like ASCII 63 but isn't so I can't remove it

后端 未结 3 1514
情话喂你
情话喂你 2021-01-19 00:45

I\'m reading text from a text file. The first string the text file has to read is \"Algood \", and note the space. In Notepad, it appears that there is a space in this strin

3条回答
  •  温柔的废话
    2021-01-19 01:20

    I have wrote the following function in Excel VBA which will remove the "black diamond" for a single cell.

    The hardest thing is to not loop each digit in all field to find it. I needed a method to identify the black diamond without check all digits of all fields.

    I used a ADODB recordset, if the string is not accepted by the RS, it means it contains an invalid character. Then it looks for a ASC(63) = “?”, then it trims the cell down to without the black diamond.

    The reason this work is when it loops through each digit in the string, it will recognize the black diamond as ASC = 63. If is a real question mark, it will be accepted by the RS.

    Private Function Correct_Black_Diamond(ByVal First_Address As Variant) As String
        Dim CheckDigit As Integer
        Dim Temp_string As String
        Dim temp_Rs As New ADODB.Recordset
            temp_Rs.Fields.Append "address", adChar, 9999
            temp_Rs.Open
    
            temp_Rs.AddNew
                On Error GoTo Further_Address_Check
                temp_Rs!Address = First_Address
            temp_Rs.Update
    
            Correct_Black_Diamond = First_Address
        Exit Function
    
    Further_Address_Check:
            For CheckDigit = 1 To Len(First_Address)
                If Asc(Mid(First_Address, CheckDigit, 1)) = 63 Then
                    Temp_string = Trim(Mid(First_Address, 1, CheckDigit - 1)) & Trim(Mid(First_Address, CheckDigit + 1, Len(First_Address)))
                End If
            Next CheckDigit
            First_Address = Temp_string
            Correct_Black_Diamond = First_Address
            Exit Function
    
    End Function
    

提交回复
热议问题