2009-08-21 6 views
6

nutzen Ich frage mich, was mit Menschen da ‚Englisch-Strings richtig nutzen‘ Kapital ‚‘ wird die Arbeit nicht tun:Wie Englisch Zeichenfolge in Emacs

(capitalize "can't") 
=> "Can'T" 

Obwohl diese Funktion zu schreiben trivial ist, ich Ich frage mich, ob es eine bevorzugte integrierte Möglichkeit gibt, es zu tun.

Antwort

8

Vielleicht, wenn Sie vorübergehend ' die aktuellen Worttabelle konstituierenden Syntax hinzufügen:

(modify-syntax-entry ?' "w") 

(capitalize "can't") 
=> "Can't" 
+2

+1, eine Verwarnung mit diesem jedoch: (Kapital "Dies ist ein 'Test'") "This Is A 'test'" – cobbal

5

Ich habe M-c Kapital-Wort gebunden, und es funktioniert can't richtig zu nutzen.

+0

Kapital-Wort funktioniert, weil es sieht "nicht" als zwei Worte, kann und t. Dies ist, warum ursprünglich Saiten anstelle von Wörtern gesagt. Mit Großbuchstaben-Wort müsste ich alle Wörter in der Zeichenkette durchlaufen und es würde die "t" s beenden. –

+1

Nein, das stimmt nicht. Großbuchstaben-Wort sieht kann nicht als ein einziges Wort. Es setzt das t nicht groß. Aber es ist eine interaktive Funktion, die das folgende Wort (oder N-Zeichen) im aktuellen Puffer groß schreibt. Es ist keine Funktion, die für die übergebene Zeichenfolge gilt. Also würde es sowieso nicht für dich funktionieren. – Cheeso

+0

Ich dachte das Gleiche, aber wenn Sie 'M-2 M-x Großbuchstaben-Wort 'auf" kann nicht "ausführen, erhalten Sie" Kann nicht ". Also, es sieht "kann nicht" als zwei Worte. – seth

1

Aktuelle Antworten sind in Ordnung, aber wenn Sie mit Zeichenfolgen im Code arbeiten, können Sie s String Manipulation Bibliothek verwenden. s-capitalize macht das erste Wort in einem Satz groß.

ELISP> (s-capitalize "can't win the war on drugs in a prison, where the hell you gonna win it?") 
"Can't win the war on drugs in a prison, where the hell you gonna win it?" 
ELISP> (s-join " " (-map 's-capitalize (s-split " " "can't win the war on drugs in a prison, where the hell you gonna win it?"))) 
"Can't Win The War On Drugs In A Prison, Where The Hell You Gonna Win It?" 

s-titleize nutzt jedes Wort in einem String, aber es ist ein einfacher Wrapper um Einbau-capitalize daher Karl Voigtland's workaround gilt.

ELISP> (s-titleize "Girl, you can't even think of calling this shit a war.") 
"Girl, You Can'T Even Think Of Calling This Shit A War." 
ELISP> (progn (modify-syntax-entry ?' "w") (s-titleize "Girl, you can't even think of calling this shit a war.")) 
"Girl, You Can't Even Think Of Calling This Shit A War." 
1

Das Verhalten hängt natürlich von der verwendeten Syntax-Tabelle ab, d. H. Hängt vom Haupt-Modus ab. Wenn das ' Zeichen die "w p" Syntax hat, dann sollte es richtig funktionieren. Dies ist im Textmodus der Fall, jedoch nicht in den meisten Programmiermodi.

Verwandte Themen