箭头字符问题

时间:2015-08-18 17:02:47

标签: html vb.net unicode ascii

我在指定的文件夹中收到excel文件以进行广告资源上传。当这些上传我的系统时抛出了一个无效的InventoryId错误。最后一行数据带有一个箭头字符,复制和粘贴后会显示一个空格。

有谁知道这个右箭头字符是什么? 不是HTML,ASCII或Unicode。

我需要在该字符上创建一个验证,如果存在该行,则不要带该行。

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作来删除Unicode字符。

 Dim Str As String = "My Stȟring of ChaǕracters"
 Str = System.Text.RegularExpressions.Regex.Replace(Str, "[^\u0000-\u007F]", "")

或者如果您想识别字符串然后执行某些操作

 Dim Str As String = "My String of Characters"
 Dim UniCodeCollection As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(Str, "[^\u0000-\u007F]")

 If UniCodeCollection.Count > 0 Then
     'Add code to do somthing here
 End If

答案 1 :(得分:0)

由于右箭头字符已通过字符串传递,因此必须为Unicode字符。

如果粘贴可疑字符的程序无法显示,例如它使用的字体没有可见的表示,然后它可能显示为空白。

您需要追踪角色的代码。

该字符可能能够在Visual Studio中显示,因此在以下代码中复制并粘贴有问题的字符串代替“Crèmebrûlée→”并检查输出是否有任何内容这是突出的:

Module Module1

    Sub Main()
        Dim s = "Crème brûlée →"
        For i = 0 To s.Length - 1
            Console.WriteLine(AscW(s(i)))
        Next
        Console.ReadLine()

    End Sub

End Module

输出:

67
114
232
109
101
32
98
114
251
108
233
101
32
8594

在上文中,8594(& H2192)与众不同。您现在只需要检查是否s.IndexOf(ChrW(8594)) >= 0,表示该字符在字符串中。

答案 2 :(得分:0)

解决了这个问题!

我所做的是使用以下代码找到角色:

AscW(CurrentRecord(0).ToString) = Variable

一旦我找到了这个角色,我在if语句中使用相同的行来解决问题。见下文。

If Not AscW(CurrentRecord(0).ToString) = "26" Then
     If Not CurrentRecord(0).ToString = "InventoryId" Then

        NewRow("InventoryId") = CurrentRecord(0)
        NewRow("Quantity") = CurrentRecord(1)
        NewRow("CostCentre") = CurrentRecord(2)
        NewRow("UsageDate") = CurrentRecord(3)

        InventoryLoad.Tables(0).Rows.Add(NewRow)

        NewRow = InventoryLoad.Tables("Load").NewRow
      End If

ElseIf AscW(CurrentRecord(0).ToString) = "26" Then

Else
CommonFunctions.ErrorEmail("ProductId " & CurrentRecord(0).ToString & " was not recognized", "LoadInventory - ProductId")
End If