【问题标题】:Sampling StringName.SubString(p,1) for paragraph formatting character为段落格式字符采样 StringName.SubString(p,1)
【发布时间】:2015-10-23 07:26:05
【问题描述】:

请尝试具体回答我的问题,不要提供替代方法,因为我有一个非常具体的问题需要这种临时解决方案。非常感谢。

我的代码自动通过 VB.NET 打开 Word,打开文档,找到表格,转到单元格,将 cells.range.text 移动到字符串变量中,并在 For 循环中将位置 p 处的字符与 字符串。

我尝试过字符串: “^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

将单元格文本分配给字符串变量时是否会丢失结构数据。我过去曾在 VBA 中成功搜索过这样的格式标记。

【问题讨论】:

  • 似乎 VB.NET 字符串不包括字符引用“00B6”,因此没有 Pilcrow。我可以将 Word.Document.table.cell.range.text 转换为另一种数据类型吗?

标签: vb.net ms-word automation office-interop paragraph


【解决方案1】:

假设您的字符串包含该字符,您可以使用 ChrW 从十六进制值创建适当的字符,并检查:

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

更新

这是一个完整的例子:

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

这个输出:

这是该字符的测试¶ 找到它:15

【讨论】:

  • 在我对我的问题发表评论之前,我已经按照你现在建议马克的方式完成了。似乎 '&00B6 无法转换为 Integer(我的解释是它不包含在转换表中),因此 Pilcrow 不存在。
  • @Jimbo 不确定您所说的“似乎 '&00B6 无法转换为整数”是什么意思,但请确保您使用的是 &H00B6 - 没有引号,并注意 H - 这是一个十六进制常数。
  • 非常感谢!缺少的只是“H”,为什么微软的示例(MSDN)不包括这个?!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 2014-01-02
相关资源
最近更新 更多