0

如何在 Dragon NaturallySpeaking 的高级脚本中从字符串中修剪所有形式的空白(制表符、新行……)?

Trim()只删除空格。例如,以下语音命令将键入[tab]test

' Tested with Dragon NaturallySpeaking 12.5 Professional on Windows 7 SP1 x64 Ultimate
Sub Main
    s = vbTab & "test"
    s = Trim(s)
    SendKeys s
End Sub
4

2 回答 2

3

我不知道会自动删除制表符和其他空格的 Trim 命令,但是您可以使用 Replace 命令一一删除空格。

Sub Main
    s = vbTab & "test"
    s = Trim(s)
    s = Replace (s, Chr(9), "") ' Replaces the tab character written in ASCII code with nothing
    s = Replace (s, Chr(10), "") ' Replaces the LF written in ASCII code with nothing
    s = Replace (s, Chr(13), "") ' Replaces the CR written in ASCII code with nothing
    SendKeys s
End Sub

这是一个部分解决方案:它将删除所有这些空格,即使在字符串中也是如此。如果您想保留这些,您必须找到一种方法来测试第一个或最后一个字符是否为空格,并将它们替换为空。我无法快速弄清楚这一点,因为我以前没有这样做过。

于 2016-12-06T13:31:38.793 回答
2

根据我在这里所做的工作:

CheckNewPara 在这里: http ://knowbrainer.com/forums/forum/messageview.cfm?catid=4&threadid=2739&discTab=true&messid=11427&parentid=11409&FTVAR_FORUMVIEWTMP=Single 或者在论坛中搜索该术语,并注意,它的作用是回顾当您调用函数来决定下一步做什么时,查看光标所在位置之前存在哪些现有字符

人们可以适应和创造以下内容:

' Tested with Dragon NaturallySpeaking 13 Professional on Windows 8.1
Sub Main
    s = vbTab & " " & vbTab & "test"
    s = myTrim(s)
    MsgBox """" & s & """"
End Sub
Function myTrim ( s As String )
    While Left(s,1)=Chr(9) Or Left(s,1)=Chr(10) Or Left(s,1)=Chr(13) Or Left(s,1)=" "
        s=Mid(s,2)
    Wend
    While Right(s,1)=Chr(9) Or Right(s,1)=Chr(10) Or Right(s,1)=Chr(13) Or Right(s,1)=" "
        s=Mid(s,1,Len(s)-1)
    Wend
    myTrim = s
End Function

当然,您可以在一个常用的 Uses 注释文件中引用您的 myTrim 函数,因此您只需编写一次。

H,

于 2016-12-06T19:15:42.460 回答