2015-07-31 1 views
-3

попробуйте ответить на мой вопрос, а не предлагать альтернативные подходы, поскольку у меня есть очень специфическая проблема, которая нуждается в этом специальном решении. Большое спасибо.Сэмплирование StringName.SubString (p, 1) для символа форматирования абзаца

Автоматически мой код открывает Word через VB.NET, открывает документ, находит таблицу, переходит в ячейку, перемещает этот cell.range.text в переменную String и в цикле For сравнивает символ в позиции p до Строка.

Я попытался Струны: "^ р", "^ 013", "U + 00B6"

Мой код:

Dim nextString As String 

    'For each cell, extract the cell's text. 
    For p = 17 To word_Rng.Cells.Count 
     nextString = word_Rng.Cells(p).Range.Text 
     'For each text, search for structure. 
     For q = 0 To nextString.Length - 1 
      If (nextString.Substring(q, 1) = "U+00B6") Then 
       Exit For 
      End If 
     Next 
    Next 

ли структурные потери данных при назначении клеток текст в переменную String. Я давно искал такие форматы, как это в VBA.

+0

Кажется, что строки VB.NET не содержат ссылку на символ '00B6', поэтому нет Pilcrow. Есть ли другой тип данных, который я могу использовать для Word.Document.table.cell.range.text? – Jimbo

ответ

0

Предполагая, что ваша строка содержит символ, вы можете использовать ChrW создать соответствующий символ из шестнадцатеричного значения, и проверьте, что:

If nextString.Substring(q, 1) = ChrW(&h00B6) Then 
    Exit For 
End If 

UPDATE

Вот полный пример:

Dim nextString = "This is a test " & ChrW(&H00B6) & " for that char" 
Console.WriteLine(nextString) 

For q = 0 To nextString.Length - 1 
    If nextString(q) = ChrW(&H00B6) Then 
     Console.WriteLine("Found it: {0}", q) 
    End If 
Next 

В этом выходы:

 
This is a test ¶ for that char 
Found it: 15 
+0

Я сделал так, как вы теперь предложили Марка, прежде чем я прокомментировал свой вопрос. Кажется, что '& 00B6 не может быть преобразован в Integer (моя интерпретация заключается в том, что он не включен в таблицу преобразования), и поэтому Pilcrow не существует. – Jimbo

+0

@ Jimbo Не уверен, что вы подразумеваете под «Кажется, что« & 00B6 не может быть преобразован в Integer », но убедитесь, что вы используете & H00B6 - никаких кавычек, и обратите внимание на H - это шестнадцатеричная константа. – Mark

+0

Большое вам спасибо! Все, что не хватало, было «H», почему, черт возьми, это не примеры Microsoft (MSDN)? – Jimbo

Смежные вопросы