How can I camelCase a phrase with Dragon NaturallySpeaking's advanced scripting?

a 夏天 提交于 2020-01-17 08:02:17

问题


From time to time, typically when coding, I would like to dictate a phrase so that it is camelCased a phrase. For example, when I dictate sentence generator I would like Dragon NaturallySpeaking to write sentenceGenerator.

How can I camelCase a phrase with Dragon NaturallySpeaking's advanced scripting?


Same question for Dragon Dictate: How can I convert a series of words into camel case in AppleScript?


回答1:


You can use this function:

' CamelCases the previous <1to10> words:
' Voice command name: CamelCase <1to10>
' Author: Edgar
' URL: https://www.knowbrainer.com/forums/forum/messageview.cfm?FTVAR_FORUMVIEWTMP=Linear&catid=12&threadid=14634&discTab=true
' URL mirror: https://web.archive.org/web/20170606015010/https://www.knowbrainer.com/forums/forum/messageview.cfm?FTVAR_FORUMVIEWTMP=Linear&catid=12&threadid=14634&discTab=true
' Tested with Dragon NaturallySpeaking 12.5 with Windows 7 SP1 x64 Ultimate

Sub Main
   Dim camelVariable, dictate, firstCharacter As String
   Dim wasSpace, isLower, trailingSpace As Boolean
   Dim dictationLength As Integer

   For increment = 1 To Val (ListVar1)
      SendKeys "+^{Left}", 1
   Next increment
   Wait 0.2
   SendKeys "^c", 1
   Wait 0.3
   dictate = Clipboard
   Wait 0.3
   dictationLength = Len (dictate)

   If Mid (dictate, dictationLength, 1) = " " Then trailingSpace = True
'Dim testing As String
'testing = "#" + Mid (dictate, 1, dictationLength) + "#"
'MsgBox testing
   dictate = Trim (dictate)
   firstCharacter = Mid (dictate, 1, 1)
   firstCharacter = LCase (firstCharacter)
   camelVariable = firstCharacter

   dictationLength = Len (dictate)
   If dictationLength > 1 Then
      For increment = 2 To dictationLength
         firstCharacter = Mid (dictate, increment, 1)
         If firstCharacter = " " Then
            wasSpace = True
         Else
            If wasSpace = True Then firstCharacter = UCase (firstCharacter)
            camelVariable = camelVariable + firstCharacter
            wasSpace = False
         End If
      Next increment
   End If
   If leadingSpace = True Then camelVariable = " " + camelVariable
   If trailingSpace = True Then camelVariable = camelVariable + " "
   SendKeys camelVariable
End Sub

or

' CamelCases the previous dictated words:
' Voice command name: CamelCase that
' Author: Heather
' URL: https://www.knowbrainer.com/forums/forum/messageview.cfm?FTVAR_FORUMVIEWTMP=Linear&catid=12&threadid=14634&discTab=true
' URL mirror: https://web.archive.org/web/20170606015010/https://www.knowbrainer.com/forums/forum/messageview.cfm?FTVAR_FORUMVIEWTMP=Linear&catid=12&threadid=14634&discTab=true
' Tested with Dragon NaturallySpeaking 12.5 with Windows 7 SP1 x64 Ultimate

Option Explicit

Sub Main
Dim engCtrl As New DgnEngineControl
Dim Text As String
Dim VarText As String

HeardWord "cut","that"
Text = Clipboard

SendDragonKeys "" & CamelCase(Text)
End Sub

Public Function CamelCase(strInput As String) As String
Dim i As Integer
Dim sMid As String
Dim foundSpace As Boolean

For i = 1 To Len(strInput)
sMid = Mid(strInput, i, 1)
Select Case Asc(sMid)
Case 32:
foundSpace = True

Case 65 To 90:

If i = 1 Then
CamelCase = CamelCase + LCase(sMid)
Else
CamelCase = CamelCase + sMid
End If

foundSpace = False

Case 97 To 122:
If foundSpace Then
CamelCase = CamelCase + UCase(sMid)
Else
CamelCase = CamelCase + sMid
End If

foundSpace = False

Case Else:
CamelCase = CamelCase + sMid
foundSpace = False

End Select
Next i
End Function

or

' CamelCases the next dictated words:
' Voice command name: CamelCase <dictation>
' Author: Edgar
' URL: https://www.knowbrainer.com/forums/forum/messageview.cfm?FTVAR_FORUMVIEWTMP=Linear&catid=12&threadid=14634&discTab=true
' URL mirror: https://web.archive.org/web/20170606015010/https://www.knowbrainer.com/forums/forum/messageview.cfm?FTVAR_FORUMVIEWTMP=Linear&catid=12&threadid=14634&discTab=true
' Requires Dragon NaturallySpeaking 13 Professional or higher, because the variable <dictation> was introduced in Dragon NaturallySpeaking 13 Professional.

Sub Main
   Dim camelVariable, dictate, firstCharacter As String
   Dim wasSpace, isLower As Boolean
   Dim dictationLength As Integer

   dictate = ListVar1

   dictate = Trim (dictate)' probably unnecessary
   firstCharacter = Mid (dictate, 1, 1)
   firstCharacter = LCase (firstCharacter)
   camelVariable = firstCharacter

   dictationLength = Len (dictate)
   If dictationLength > 1 Then
      For increment = 2 To dictationLength
         firstCharacter = Mid (dictate, increment, 1)
         If firstCharacter = " " Then
            wasSpace = True
         Else
            If wasSpace = True Then firstCharacter = UCase (firstCharacter)
            camelVariable = camelVariable + firstCharacter
            wasSpace = False
         End If
      Next increment
   End If

   SendKeys " " + camelVariable + " "
End Sub

(source) (mirror)



来源:https://stackoverflow.com/questions/44378834/how-can-i-camelcase-a-phrase-with-dragon-naturallyspeakings-advanced-scripting

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!