2015-08-18 2 views
-1

Я получаю файлы excel в указанной папке для загрузки ресурсов. Когда эти загрузки моей системы бросает ошибку недействительного InventoryId. Последняя строка данных имеет символ стрелки, который при копировании и вставке показывает пустое пространство.Arrow Character Issue

Кто-нибудь знает, что это за символ правой стрелки? Это не HTML, ASCII или Unicode.

Мне нужно создать валидацию этого символа, чтобы не привести строку, если она присутствует.

ответ

0

Решил проблему!

То, что я сделал, было найти то, что персонаж использовал следующий код:

AscW(CurrentRecord(0).ToString) = Variable 

После того, как я обнаружил, что персонаж был я использовал ту же линию в заявлении, если решить эту проблему. Смотри ниже.

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 
0

Чтобы удалить символы Юникода, вы можете сделать что-то вроде следующего.

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 
+0

Это не было бы полезно, если бы в инвентаре были предметы, такие как крем-брюле. –

+0

@AndrewMorton. Вышеупомянутый код должен удалить все символы Юникода. если вам нужно сохранить символы акцента, вам просто нужно изменить Regex на то, что когда-либо понадобится. Пример включения большинства символов акцента будет выглядеть как '[^ \ u0000- \ u007F,^\ u00E0- \ u017E]'. Это сохранит ваш крем для бритья ... – jradich1234

0

как правая стрелка характера в была передана через строку, оно должно быть символом Unicode.

Если программа, в которую вы вставляете подозрительный символ, не может отображать ее, например. он использует шрифт без видимого его представления, тогда он может выглядеть как пустой.

Вам нужно отследить, какой код для персонажа.

Персонаж вероятно быть в состоянии показать в Visual Studio, так что скопировать и вставить строку обижая вместо «Крем-брюле →» в следующем коде и проверьте результат для всего, что выделяется:

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, что указывает на то, что символ находится в строке.