首页 > 解决方案 > Xojo 计算 HTML 中的字数 - 删除标签和其他可能影响计数的不需要的内容?

问题描述

我在计时器的动作事件中插入了一些临时的,当你输入降价时,它会将降价转换为 html。此事件将 html 放在变量 mHTML 中。

我想计算文本中的单词并将其显示在标签中。我将一个词定义为一个或多个不包含 html 标签的可打印字符。

此代码首先从变量 mHTML 中获取 html。然后我使用正则表达式删除任何标签。然后,我使用 Regex 将一个或多个行尾替换为一个空格。然后我使用 Regex 将一个或多个空格替换为一个空格。然后我从开头或结尾字符串修剪任何空格。然后我计算字符串中的空格数并加 1 以获得显示在应用程序窗口标签内的字数。

我还添加了一些代码来将我计算空格的清理文本复制到剪贴板,以检查我的代码是如何运行的。

什么是更有效的方法来做到这一点。我添加的代码上方和下方都有无法更改的代码。我添加的上述代码包括将 HTML 放入变量 mHTML 的代码。

-Code Above Here-

Dim re As New RegEx
re.SearchPattern = "<[^<>]+>"
re.ReplacementPattern = ""
re.Options.ReplaceAllMatches = True

Dim html As String = mHTML
Dim plain As String = re.Replace(html)

re.SearchPattern = "\n+"
re.ReplacementPattern = " "
re.Options.ReplaceAllMatches = True

plain = re.Replace(plain)

re.SearchPattern = "\s+"
re.ReplacementPattern = " "
re.Options.ReplaceAllMatches = True

plain = re.Replace(plain)
plain = trim(plain)

Dim MCount as Integer = CountFields(plain, " ")
Dim C as New Clipboard
C.Text = plain

Label.Text = Str(MCount + 1)

-More Code Below Here-

标签: htmlxojo

解决方案


我认为删除标签的过程是合理的,除非标签内的字符串中有“>”字符,但我不确定这是否允许。

您是在 macOS 或 Linux 系统上执行此操作吗?

然后,您可以尝试使用 cmdline 工具wc通过将不带标签的文本传递给它来计算单词。使用 Shell 类调用该工具,并通过标准输入将文本传递给它,或者将文本保存到临时文件并将其路径传递给命令。但首先在终端中手动尝试该wc命令,看看它是否能给你预期的结果。


推荐阅读