获取不带空格的字符数

本文关键字:字符 空格 获取 | 更新日期: 2023-09-27 18:19:51

我正在用C#编写一个Office加载项。我正在尝试从带有WdBuiltInProperty的Word文档中获取没有空格的字符数。但是,转换为long不起作用。

错误消息是:

类型为"System._ComObject"的 COM 对象不能转换为"System.IConvertible">

这是我到目前为止thisAddIn.cs的代码片段:

using Word = Microsoft.Office.Interop.Word;
// ...
public partial class ThisAddIn
{
  public void Calc()
  {
    Word.Document doc = this.Application.ActiveDocument ;
    long c=doc.BuiltInDocumentProperties[Word.WdBuiltInProperty.wdPropertyCharacters];
    // ^^^ Error ^^^
  }
}

问题:

  1. 如何正确完成转换?

和/或

  1. 有没有另一种方法可以获取没有空格的字符数?

获取不带空格的字符数

而不是BuiltInDocumentProperties,使用具有Count属性的Characters

long c = doc.Characters.Count;

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.characters.count.aspx

编辑(来自 VBA 示例(:

Sub CountChars()
    Dim iCount(57) As Integer
    Dim x As Integer
    Dim iTotal As Integer
    Dim iAsc As Integer
    Application.ScreenUpdating = False
    iTotal = ActiveDocument.Range.Characters.Count
    For x = 1 To iTotal
        iAsc = Asc(ActiveDocument.Range.Characters(x))
        If iAsc >= 65 And iAsc <= 122 Then
        iCount(iAsc - 65) = iCount(iAsc - 65) + 1
        End If
    Next x
    For x = 0 To 57
        Debug.Print x, iCount(x)
    Next x
    Application.ScreenUpdating = True
End Sub
int c = doc.BuiltInDocumentProperties[Word.WdBuiltInProperty.wdPropertyCharacters].Value;

BuiltInDocumentProperties[]的结果是Office.DocumentProperty(可以通过检查 Word VBA 编辑器中的"局部变量"窗口找到(,并且默认.Value属性包含该数字。
它在 VBA 中无需.Value即可工作,因为 VBA 具有不同的默认值赋值 ( Let (,以及带有 Set 的单独和对象引用赋值。此外,VBA 中的Long类型在 .NET 中Int32