2016-12-06 1 views
0

Wie kann ich alle Formen von Leerraum (Tabs, neue Zeilen, ...) aus einer Zeichenkette in Dragon NaturallySpeaking's erweitertem Scripting entfernen?Wie kann ich alle Formen von Leerzeichen (Tabs, neue Zeilen, ...) aus einer Zeichenkette in Dragon NaturallySpeaking's erweitertem Scripting entfernen?

Trim() entfernt nur Leerräume. Zum Beispiel wird der folgende Sprachbefehl [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 

Antwort

2

auf die Arbeit Basierend ich hier tat:

CheckNewPara hier: http://knowbrainer.com/forums/forum/messageview.cfm?catid=4&threadid=2739&discTab=true&messid=11427&parentid=11409&FTVAR_FORUMVIEWTMP=Single suchen nach diesem Begriff das Forum, und beachten Sie, was es tut, ist zurückblicken, um zu sehen, was Charakter bestehende (s) sind vor dem der Cursor ist , wenn Sie die Funktion, um zu entscheiden, was nennen anpassen nächste

man kann tun und erstellen Sie wie folgt vor:

' 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 

Natürlich können Sie Ihre myTrim-Funktion in einer gemeinsamen Kommentardatei verwenden, so dass Sie sie nur einmal schreiben müssen.

Hth,

+0

Danke, deine Lösung funktioniert super. Weißt du, ob es möglich ist, die 'String.Trim'-Methode zu verwenden? Ich lese auf https://msdn.microsoft.com/en-us/library/h9wz3dez(v=vs.90).aspx: "Die LTrim, RTrim und Trim-Funktionen entfernen Leerzeichen von den Enden der Zeichenfolgen. Um andere zu entfernen Formen von Leerzeichen, wie z. B. Tabulatorzeichen, verwenden die Methode 'String.Trim'.". Aber es gelingt mir nicht, die 'String.Trim'-Methode zu verwenden: Wenn ich versuche, den Sprachbefehl zu sagen, bekomme ich das übliche" Bitte korrigieren Sie die Syntaxfehler vor dem Speichern eines Makros ". –

+1

Dragon NaturallySpeaking Advanced Scripting basiert auf WinWrap Basic V6 - alt und veraltet. Hier finden Sie ein Diagramm mit vielen Unterschieden und Ähnlichkeiten zwischen WinWrap Basic V6 (WW), Microsoft VB Script 5 (VBS) und Microsoft VBA 6 (VBA): http://www.pcspeak.com/scripting10/ advanced_scripting_vs_vba.pdf Auf jeden Fall unterstützt WWB nicht die Behandlung von Strings als Objekte, so wie es eine moderne Sprache wäre - also nein, string.trim Methode wird nicht funktionieren. – PGilm

+2

Danke, gut zu wissen! Es ist ärgerlich, dass Dragon NaturallySpeaking Advanced Scripting nicht auf einer moderneren Sprache basiert. Übrigens können Sie Ihren Kommentar gerne in eine Antwort in [Welche Programmiersprachen kann ich mit Dragon Advanced Scripting verwenden?] Konvertieren (http://stackoverflow.com/q/41009401/395857) –

2

Ich bin mir nicht bewusst ein Trim-Befehl eingeben, der auf die Registerkarte und andere Leerzeichen automatisch entfernen wird, aber Sie können die Whitespaces einzeln mit dem Befehl Ersetzen entfernen.

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 

Dies ist eine Teillösung: Es wird alle diese Leerzeichen entfernen, auch innerhalb der Zeichenfolge. Wenn Sie diese behalten möchten, müssen Sie einen Weg finden, um zu testen, ob der erste oder der letzte Zeichen Leerzeichen sind und sie durch nichts ersetzen. Ich kann das nicht schnell herausfinden, wie ich es vorher noch nicht getan habe.

+1

+1 für die Erinnerung, dass Sie "Ersetzen" in Dragon NaturallySpeaking Advanced Scripting verwenden können. Aber Sie brauchen es nicht für die OP-Anfrage, wie in meiner Antwort gezeigt. – PGilm

+0

Danke für die Alternativlösung, in der Tat ein bisschen weniger subtil als die andere :-) Als Randnotiz suche ich nach Freisprech-Stenomast für die Spracherkennung, jeder Zeiger ist sehr willkommen: [Gerät, das die Verwendung einer Stenomaske erlaubt ohne es mit der Hand halten zu müssen] (http://hardwarerecs.stackexchange.com/q/6395/40) –

+1

Ha! Ja, tatsächlich - subtil. Übrigens, Sie können meine Lösung leicht anpassen, um auch das hintere Ende einer Saite abzuschneiden. Ändere einfach alle 'Links' nach' Rechts' und die Bearbeitung wie folgt: 's = Mid (s, 1, Len (s) -1)'. Willst du, dass ich meine Antwort editiere, um sie einzuschließen? (Ich frage bc, ich möchte, dass du sie als Beantwortet markierst, aber du willst sichergehen, dass es ist)? Genießen! – PGilm

Verwandte Themen