Ihre Frage ist nicht klar: Möchten Sie alle Leerzeichen entfernen oder möchten Sie führende und nachfolgende Leerzeichen entfernen?
Sinan Ünür
25
PHPs trim()Strips Whitespace " vom Anfang und Ende eines Strings " (wie in der Dokumentation angegeben ) entfernt nicht "alle Whitespaces".
Tadeck
3
Im Zweifelsfall lesen Sie die Ruby-Online-Dokumentation für die String-Klasse (siehe .strip unten).
Merovex
2
Beachten Sie, dass bei allen Antworten, die verwendet String#stripoder abgeglichen /\s+/werden, nur ASCII-Leerzeichen entfernt werden. Wenn Sie sicherstellen möchten, dass auch Nicht-ASCII-Leerzeichen erfasst werden (z. B. HTML-  Code), lesen Sie die seltsam unbeliebte Antwort von @EBooker.
MatzFan
1
Schade, dass solch großartige Antworten nicht die endgültige Würde eines Akzeptierten erreichen können
New Alexandria
Antworten:
846
Wenn Sie nur führende und nachfolgende Leerzeichen entfernen möchten (wie das Trimmen von PHP), können Sie diese verwenden .strip. Wenn Sie jedoch alle Leerzeichen entfernen möchten , können Sie .gsub(/\s+/, "")stattdessen verwenden.
\ s + bedeutet 1 oder mehr Leerzeichen (Leerzeichen, Zeilenumbruch, Tabulator). Die // Umgebung zeigt, dass es sich um einen regulären Ausdruck handelt.
Dylanfm
3
Dies ist nicht gleichbedeutend mit trim ()
Brett Holt
6
Strip war genau das, wonach ich gesucht habe, danke für die gute Frage und die Antwort!
Francois
15
@BrettHolt Der gsub-Ausdruck ist nicht dasselbe wie trim, aber der Fragesteller hat den Ausdruck "all whitespace" eingefügt, der auch nicht mit trim identisch ist. Also gab ich Alternativen.
Joel.neely
494
s ="I have white space".delete(' ')
Und um die PHP- trim()Funktion zu emulieren :
s =" I have leading and trailing white space ".strip
Dies ist viel besser lesbar als der reguläre Ausdruck. Warum ist es nicht so beliebt?
Karbass
89
@ckarbass: Weil viele Leute zu komplexe Lösungen für einfache Probleme bevorzugen. Es geht mit der Erfahrung weg.
Ed S.
97
@ckarbass @Ed S. Es ist nicht so beliebt, weil es nicht dasselbe ist. In der ursprünglichen Frage wurde der Ausdruck "Alle Leerzeichen" verwendet, der Tabulatoren, Zeilenumbrüche usw. enthält. Diese vorgeschlagene Antwort entfernt diese anderen Leerzeichen nicht. In Bezug auf "zu komplex" schlage ich vor, den einfachen regulären Ausdruck mit zu vergleichen .delete(' ').delete('\t').delete('\n') ..., der zu ausführlich ist und viele Möglichkeiten für Tippfehler und Auslassungsfehler bietet.
Joel.neely
13
@ joel.neely: Ich habe diese Frage vor langer Zeit beantwortet, aber die Frage noch einmal gelesen, diesmal genauer. Das OP fragte nach "einer Funktion zum Entfernen aller Leerzeichen" , fragte dann aber nach "so etwas wie PHPs trim ()" . Es ist also ein bisschen schwierig, genau zu wissen, was sie hier wollen. trim()entfernt sicherlich keine Zeilenumbrüche und andere Leerzeichen. Sie wählen eine Interpretation einer vagen Frage.
Ed S.
4
@ joel.neely: Das heißt, ich stimme zu, dass eine Lösung , die über die wörtliche Auslegung der Frage geht ein besseres in diesem Fall ist (dh eine regex alle Zeichen entfernt werden, die Leerzeichen anstatt einer Reihe von darstellen würde delete()Anrufe.)
Das habe ich vergessen. Ich wusste, dass es eine Methode zum Entfernen von Leerzeichen gibt, die dies standardmäßig tun würde, wenn keine Argumente übergeben würden. +1
Ed S.
Dies entspricht dem Trimmen. Bitte beachten Sie das obige Zitat von @Tadeck.
Brett Holt
3
Wenn die Möglichkeit besteht, dass die Variable vorhanden ist nil, müssen Sie die .to_sMethode ausführen , bevor Sie den Strip ausführen , damit die Strip-Methode keinen Fehler auslöst. Ex. str=nil; str.to_s.strip #=> ""
Scarver2
Ich bevorzuge some_data.strip! wenn some_data.is_a? String
slindsey3000
156
String#strip - Entfernen Sie alle Leerzeichen vom Anfang und vom Ende.
String#delete- x.delete(" \t\r\n")- löscht alle aufgelisteten Leerzeichen.
String#gsub- x.gsub(/[[:space:]]/, '')- entfernt alle Leerzeichen, einschließlich Unicode- Leerzeichen .
Hinweis : Alle oben genannten Methoden geben eine neue Zeichenfolge zurück, anstatt das Original zu mutieren. Wenn Sie die Zeichenfolge an Ort und Stelle ändern möchten, rufen Sie !am Ende die entsprechende Methode mit auf.
Das Beispiel zum Löschen von Zeichenfolgen # scheint einen regulären Ausdruck zu verwenden, steht jedoch \sin Anführungszeichen anstelle von Schrägstrichen. Außerdem konnte ich in der Dokumentation keine Erwähnung finden, dass das Löschen einen regulären Ausdruck als Argument verwenden kann.
Faultier
@slothbear, es ist kein regulärer Ausdruck, es ist eine kleine Reihe von Mustern, die regulären Ausdrucksformen ähneln. Wie für die Dokumentation #deletesoll ähnlich funktionieren #count. Sie können es auch in der Konsole versuchen.
ndnenkov
Danke, dass du mir etwas Neues beigebracht hast. Und auch danke für die Erinnerung, Dinge im kleinstmöglichen Kontext (Befehlszeile) auszuprobieren.
Faultier
1
@SeinopSys Ich wollte diese Antwort nur Ruby behalten.
ndnenkov
2
Nur das letzte Beispiel in dieser Antwort zeigt den gefürchteten ASCII 160 "Non-Breaking Space", den Fluch der Web-Scraper. #stripnicht. Siehe stackoverflow.com/questions/4859438/…
user system total real
gsub, s 0.1800000.0100000.190000(0.193014)
gsub, s+0.2000000.0000000.200000(0.196408)
gsub, space 0.2200000.0000000.220000(0.222711)
gsub, join 0.2000000.0000000.200000(0.193478)
delete 0.0400000.0000000.040000(0.045157)
aber dies entfernt nur spaces, nicht allewhite spaces
Gavriel
1
delete(" \t\r\n")kümmert sich um typische Leerzeichen und ist immer noch schneller als gsub.
Seth Jeffery
94
Wenn Sie Rails / ActiveSupport verwenden , können Sie die squishMethode verwenden. Es entfernt Leerzeichen an beiden Enden der Zeichenfolge und gruppiert mehrere Leerzeichen zu einem einzelnen Leerzeichen.
Beachten Sie, dass von Antworten nur auf Links abgeraten wird. SO-Antworten sollten der Endpunkt einer Suche nach einer Lösung sein (im Gegensatz zu einem weiteren Zwischenstopp von Referenzen, die im Laufe der Zeit veralten). Bitte fügen Sie hier eine eigenständige Zusammenfassung hinzu, wobei Sie den Link als Referenz behalten.
Kleopatra
2
Ich denke, diese Antwort war ausreichend erklärt und die Tatsache, dass der Link Referenz war, da die Antwort selbst klar erklärt wurde. Diese Funktion war gut, danke
ksugiarto
4
Dies ist von ActiveSupport. Sie brauchen nicht alle Rails, um es zu benutzen, aber Sie brauchen mindestens ActiveSupport und einerequire 'active_support/core_ext/string/filters'
Justin Force
2
Dies ist ein Leerzeichen. ZB"a \t \n \f \r \v b".squish == "a b"
Purplejacket
47
Es ist ein bisschen spät, aber jeder andere, der diese Seite googelt, könnte an dieser Version interessiert sein -
Wenn Sie einen Teil des vorformatierten Textes bereinigen möchten, den ein Benutzer möglicherweise irgendwie ausgeschnitten und in Ihre App eingefügt hat, aber den Wortabstand beibehalten möchten, versuchen Sie Folgendes:
content =" a big nasty chunk of something
that's been pasted from a webpage or something and looks
like this
"
content.gsub(/\s+/," ").strip
#=> "a big nasty chunk of something that's been pasted from a webpage or something and looks like this"
Oder wenn Sie keine Rails und keine Zeilenumbrüche haben, funktioniert dies squeeze(" ")möglicherweise.
Andrew Grimm
45
Rubys .stripMethode führt das PHP-Äquivalent zu aus trim().
So entfernen Sie alle Leerzeichen:
" leading trailing ".squeeze(' ').strip
=>"leading trailing"
@Tass hat mich darauf aufmerksam gemacht, dass meine ursprüngliche Antwort doppelte Buchstaben nacheinander entfernt - YUCK! Ich habe seitdem auf die Squish-Methode umgestellt, die bei Verwendung des Rails-Frameworks bei solchen Ereignissen intelligenter ist.
require 'active_support/all'" leading trailing ".squish
=>"leading trailing"" good men ".squish
=>"good men"
Das ist schön beim Iterieren:[" Hello World", "Big Giraffe "].map(&:split).map(&:join) #=> ["HelloWorld", "BigGiraffe"]
Tbloncar
20
split.join wird alle Leerzeichen irgendwo in der Zeichenfolge sprengen.
" a b c d ".split.join
>"abcd"
Es ist einfach zu tippen und sich zu erinnern, daher ist es schön auf der Konsole und für schnelles Hacken. In seriösem Code wohl nicht willkommen, da er die Absicht maskiert.
Vielen, vielen Dank für diesen Kommentar :-) Dies ist die einzige Methode, die funktioniert, wenn Sie eine lange Zeichenfolge haben, die wie ein Absatz aussieht.
Boomerange
12
Sie könnten dies versuchen
"Some Special Text Values".gsub(/[[:space:]]+/,"")
using : space: Entfernt nicht unterbrechendes Leerzeichen zusammen mit dem regulären Leerzeichen.
Dies ist meiner Meinung nach die beste Antwort, da im wilden HTML  und in anderen Nicht-ASCII-Leerzeichen keine Leerzeichen entfernt String#stripoder von diesen abgeglichen werden /\s/. Siehe den Abschnitt "POSIX-Klammerausdrücke" in den Regexp-Dokumenten
MatzFan
8
Verwenden Sie gsub oder löschen Sie. Der Unterschied ist, dass gsub Tabs entfernen kann, während Löschen dies nicht kann. Manchmal haben Sie Registerkarten in Dateien, die von den Editoren hinzugefügt werden.
a ="\tI have some whitespaces.\t"
a.gsub!(/\s/,'')#=> "Ihavesomewhitespaces."
a.gsub!(/ /,'')#=> "\tIhavesomewhitespaces.\t"
a.delete!(" ")#=> "\tIhavesomewhitespaces.\t"
a.delete!("/\s/")#=> "\tIhavesomewhitespaces.\t"
a.delete!('/\s/')#=> using single quote is unexpected, and you'll get "\tI have ome whitepace.\t"
aber dies entfernt nur spaces, nicht allewhite spaces
Gavriel
6
Die gsub-Methode reicht völlig aus.
Die gsub-Methode kann für eine Zeichenfolge aufgerufen werden und lautet:
a ="this is a string"
a = a.gsub(" ","")
puts a
#Output: thisisastring
Die gsub-Methode sucht nach jedem Vorkommen des ersten Arguments und ersetzt es durch das zweite Argument. In diesem Fall wird jedes Leerzeichen in der Zeichenfolge ersetzt und entfernt.
Ein anderes Beispiel:
b ="the white fox has a torn tail"
Ersetzen wir jedes Vorkommen des Buchstabens "t" durch ein Großbuchstaben "T".
b = b.gsub("t","T")
puts b
#Output: The whiTe fox has a Torn Tail
Für ein Verhalten, das genau mit PHP übereinstimmt trim, ist die einfachste Methode, die String#stripMethode wie folgt zu verwenden :
string =" Many have tried; many have failed! "
puts "Original [#{string}]:#{string.length}"
new_string = string.strip
puts "Updated [#{new_string}]:#{new_string.length}"
Ruby hat auch eine Edit-in-Place-Version namens String.strip!(beachten Sie das nachfolgende '!'). Dies erfordert keine Erstellung einer Kopie der Zeichenfolge und kann für einige Verwendungszwecke erheblich schneller sein:
string =" Many have tried; many have failed! "
puts "Original [#{string}]:#{string.length}"
string.strip!
puts "Updated [#{string}]:#{string.length}"
Beide Versionen erzeugen diese Ausgabe:
Original[Many have tried; many have failed!]:40Updated[Many have tried; many have failed!]:34
Ich habe einen Benchmark erstellt, um die Leistung einiger grundlegender Anwendungen von stripund strip!sowie einiger Alternativen zu testen . Der Test ist folgender:
require 'benchmark'
string ='asdfghjkl'Times=25_000
a =Times.times.map {|n| spaces =' '*(1+n/4);"#{spaces}#{spaces}#{string}#{spaces}"}
b =Times.times.map {|n| spaces =' '*(1+n/4);"#{spaces}#{spaces}#{string}#{spaces}"}
c =Times.times.map {|n| spaces =' '*(1+n/4);"#{spaces}#{spaces}#{string}#{spaces}"}
d =Times.times.map {|n| spaces =' '*(1+n/4);"#{spaces}#{spaces}#{string}#{spaces}"}
puts RUBY_DESCRIPTION
puts "============================================================"
puts "Running tests for trimming strings"Benchmark.bm(20)do|x|
x.report("s.strip:"){ a.each {|s| s = s.strip }}
x.report("s.rstrip.lstrip:"){ a.each {|s| s = s.rstrip.lstrip }}
x.report("s.gsub:"){ a.each {|s| s = s.gsub(/^\s+|\s+$/,"")}}
x.report("s.sub.sub:"){ a.each {|s| s = s.sub(/^\s+/,"").sub(/\s+$/,"")}}
x.report("s.strip!"){ a.each {|s| s.strip!}}
x.report("s.rstrip!.lstrip!:"){ b.each {|s| s.rstrip!; s.lstrip!}}
x.report("s.gsub!:"){ c.each {|s| s.gsub!(/^\s+|\s+$/,"")}}
x.report("s.sub!.sub!:"){ d.each {|s| s.sub!(/^\s+/,""); s.sub!(/\s+$/,"")}}end
Dies sind die Ergebnisse:
ruby 2.2.5p319(2016-04-26 revision 54774)[x86_64-darwin14]============================================================Running tests for trimming strings
user system total real
s.strip:2.6900000.3200003.010000(4.048079)
s.rstrip.lstrip:2.7900000.0600002.850000(3.110281)
s.gsub:13.0600005.80000018.860000(19.264533)
s.sub.sub:9.8800004.91000014.790000(14.945006)
s.strip!2.7500000.0800002.830000(2.960402)
s.rstrip!.lstrip!:2.6700000.3200002.990000(3.221094)
s.gsub!:13.4100006.49000019.900000(20.392547)
s.sub!.sub!:10.2600005.68000015.940000(16.411131)
aber dies entfernt nur spacesnichtall white spaces
Gavriel
Verwenden Sie s.tr(" \t\n", '')stattdessen alle Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch) .
Frank Schmitt
@ Gavriel - Ich habe die Frage falsch verstanden, ich danke Ihnen, dass Sie darauf hingewiesen haben.
Jeremy Gunter
@FrankSchmitt Ich habe Ihre Antwort zu meiner Antwort hinzugefügt, um die Frage des OP besser beantworten zu können. Danke, dass du mich korrigiert hast.
Jeremy Gunter
3
Ich habe versucht, dies zu tun, da ich einen Datensatz- "Titel" als ID in der Ansicht verwenden wollte, aber die Titel Leerzeichen hatten.
Rubys .scan()und .join()String-Methoden können auch dazu beitragen, Leerzeichen in Strings zu überwinden.
scan(/\w+/).join entfernt alle Leerzeichen und verbindet die Zeichenfolge
string ="White spaces in me".scan(/\w+/).join
=>"Whitespacesinme"
Außerdem wird Leerzeichen vom linken und rechten Teil der Zeichenfolge entfernt. Mittel ltrim, rtrimund trim. Nur für den Fall, dass jemand Hintergrundinformationen Chat FoxProoder Visual Basiceinspringt Ruby.
2.1.6 :002 > string = " White spaces in me ".scan(/\w+/).join
=> "Whitespacesinme"
2.1.6 :003 > string = " White spaces in me".scan(/\w+/).join
=> "Whitespacesinme"
2.1.6 :004 > string = "White spaces in me ".scan(/\w+/).join
=> "Whitespacesinme"
2.1.6 :005 >
Ich bin etwas spät dran, aber ich entferne nachfolgende und führende Leerzeichen mit strip!. Wenn Sie ein Array haben, wie ich es getan habe, musste ich das Array durchlaufen und es nach dem Ende der Instanz speichern. Das ! hat sich darum gekümmert. Dadurch wurden alle Leerzeichen am Ende oder am Anfang entfernt, nicht nur das erste führende oder das letzte nachfolgende.
Ich bin neu in der Programmierung und die Verwendung von Strip hat nicht funktioniert, da es nach dem Ende der Schleife nicht im Array gespeichert wurde.
trim()
Strips Whitespace " vom Anfang und Ende eines Strings " (wie in der Dokumentation angegeben ) entfernt nicht "alle Whitespaces".String#strip
oder abgeglichen/\s+/
werden, nur ASCII-Leerzeichen entfernt werden. Wenn Sie sicherstellen möchten, dass auch Nicht-ASCII-Leerzeichen erfasst werden (z. B. HTML- 
Code), lesen Sie die seltsam unbeliebte Antwort von @EBooker.Antworten:
Wenn Sie nur führende und nachfolgende Leerzeichen entfernen möchten (wie das Trimmen von PHP), können Sie diese verwenden
.strip
. Wenn Sie jedoch alle Leerzeichen entfernen möchten , können Sie.gsub(/\s+/, "")
stattdessen verwenden.quelle
Und um die PHP-
trim()
Funktion zu emulieren :quelle
.delete(' ').delete('\t').delete('\n') ...
, der zu ausführlich ist und viele Möglichkeiten für Tippfehler und Auslassungsfehler bietet.trim()
entfernt sicherlich keine Zeilenumbrüche und andere Leerzeichen. Sie wählen eine Interpretation einer vagen Frage.delete()
Anrufe.)Verwandte Antwort:
kehrt zurück
quelle
nil
, müssen Sie die.to_s
Methode ausführen , bevor Sie den Strip ausführen , damit die Strip-Methode keinen Fehler auslöst. Ex.str=nil; str.to_s.strip #=> ""
String#strip
- Entfernen Sie alle Leerzeichen vom Anfang und vom Ende.String#lstrip
- Nur von Anfang an.String#rstrip
- Nur vom Ende.String#chomp
(ohne Argumente) - löscht Zeilentrennzeichen (\n
oder\r\n
) am Ende.String#chop
- löscht das letzte Zeichen.String#delete
-x.delete(" \t\r\n")
- löscht alle aufgelisteten Leerzeichen.String#gsub
-x.gsub(/[[:space:]]/, '')
- entfernt alle Leerzeichen, einschließlich Unicode- Leerzeichen .Hinweis : Alle oben genannten Methoden geben eine neue Zeichenfolge zurück, anstatt das Original zu mutieren. Wenn Sie die Zeichenfolge an Ort und Stelle ändern möchten, rufen Sie
!
am Ende die entsprechende Methode mit auf.quelle
\s
in Anführungszeichen anstelle von Schrägstrichen. Außerdem konnte ich in der Dokumentation keine Erwähnung finden, dass das Löschen einen regulären Ausdruck als Argument verwenden kann.#delete
soll ähnlich funktionieren#count
. Sie können es auch in der Konsole versuchen.#strip
nicht. Siehe stackoverflow.com/questions/4859438/…Löschen funktioniert schneller =)
quelle
spaces
, nicht allewhite spaces
delete(" \t\r\n")
kümmert sich um typische Leerzeichen und ist immer noch schneller als gsub.Wenn Sie Rails / ActiveSupport verwenden , können Sie die
squish
Methode verwenden. Es entfernt Leerzeichen an beiden Enden der Zeichenfolge und gruppiert mehrere Leerzeichen zu einem einzelnen Leerzeichen.Zum Beispiel.
ergibt sich zu:
Überprüfen Sie diese Referenz von api.rubyonrails.org .
quelle
require 'active_support/core_ext/string/filters'
"a \t \n \f \r \v b".squish == "a b"
Es ist ein bisschen spät, aber jeder andere, der diese Seite googelt, könnte an dieser Version interessiert sein -
Wenn Sie einen Teil des vorformatierten Textes bereinigen möchten, den ein Benutzer möglicherweise irgendwie ausgeschnitten und in Ihre App eingefügt hat, aber den Wortabstand beibehalten möchten, versuchen Sie Folgendes:
quelle
squish
Methode von Rails verwenden: apidock.com/rails/String/squishsqueeze(" ")
möglicherweise.Rubys
.strip
Methode führt das PHP-Äquivalent zu austrim()
.So entfernen Sie alle Leerzeichen:
@Tass hat mich darauf aufmerksam gemacht, dass meine ursprüngliche Antwort doppelte Buchstaben nacheinander entfernt - YUCK! Ich habe seitdem auf die Squish-Methode umgestellt, die bei Verwendung des Rails-Frameworks bei solchen Ereignissen intelligenter ist.
Zitieren: http://apidock.com/rails/String/squish
quelle
"good men".squeeze.strip
wird zurückkehren"god men"
Es werden linke und rechte Seitenräume entfernt. Dieser Code würde uns geben:
"Raheem Shaik"
quelle
Vergessen Sie auch nicht:
quelle
[" Hello World", "Big Giraffe "].map(&:split).map(&:join) #=> ["HelloWorld", "BigGiraffe"]
split.join
wird alle Leerzeichen irgendwo in der Zeichenfolge sprengen.Es ist einfach zu tippen und sich zu erinnern, daher ist es schön auf der Konsole und für schnelles Hacken. In seriösem Code wohl nicht willkommen, da er die Absicht maskiert.
(Basierend auf Piotrs Kommentar in Justicles Antwort oben.)
quelle
Sie könnten dies versuchen
using : space: Entfernt nicht unterbrechendes Leerzeichen zusammen mit dem regulären Leerzeichen.
quelle
 
und in anderen Nicht-ASCII-Leerzeichen keine Leerzeichen entferntString#strip
oder von diesen abgeglichen werden/\s/
. Siehe den Abschnitt "POSIX-Klammerausdrücke" in den Regexp-DokumentenVerwenden Sie gsub oder löschen Sie. Der Unterschied ist, dass gsub Tabs entfernen kann, während Löschen dies nicht kann. Manchmal haben Sie Registerkarten in Dateien, die von den Editoren hinzugefügt werden.
quelle
Es gibt viele Möglichkeiten:
Leerzeichen von beiden Seiten entfernen:
So entfernen Sie alle Leerzeichen:
So entfernen Sie alle Leerzeichen:
quelle
quelle
spaces
, nicht allewhite spaces
Die gsub-Methode reicht völlig aus.
Die gsub-Methode kann für eine Zeichenfolge aufgerufen werden und lautet:
Die gsub-Methode sucht nach jedem Vorkommen des ersten Arguments und ersetzt es durch das zweite Argument. In diesem Fall wird jedes Leerzeichen in der Zeichenfolge ersetzt und entfernt.
Ein anderes Beispiel:
Ersetzen wir jedes Vorkommen des Buchstabens "t" durch ein Großbuchstaben "T".
quelle
Für ein Verhalten, das genau mit PHP übereinstimmt
trim
, ist die einfachste Methode, dieString#strip
Methode wie folgt zu verwenden :Ruby hat auch eine Edit-in-Place-Version namens
String.strip!
(beachten Sie das nachfolgende '!'). Dies erfordert keine Erstellung einer Kopie der Zeichenfolge und kann für einige Verwendungszwecke erheblich schneller sein:Beide Versionen erzeugen diese Ausgabe:
Ich habe einen Benchmark erstellt, um die Leistung einiger grundlegender Anwendungen von
strip
undstrip!
sowie einiger Alternativen zu testen . Der Test ist folgender:Dies sind die Ergebnisse:
quelle
Meine persönliche Präferenz ist die Verwendung der Methode
.tr
wie in:
Vielen Dank an @FrankScmitt für den Hinweis, dass Sie zum Löschen aller Leerzeichen (nicht nur Leerzeichen) Folgendes schreiben müssen:
quelle
spaces
nichtall white spaces
s.tr(" \t\n", '')
stattdessen alle Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch) .Ich habe versucht, dies zu tun, da ich einen Datensatz- "Titel" als ID in der Ansicht verwenden wollte, aber die Titel Leerzeichen hatten.
Eine Lösung ist:
quelle
Rubys
.scan()
und.join()
String-Methoden können auch dazu beitragen, Leerzeichen in Strings zu überwinden.scan(/\w+/).join
entfernt alle Leerzeichen und verbindet die ZeichenfolgeAußerdem wird Leerzeichen vom linken und rechten Teil der Zeichenfolge entfernt. Mittel
ltrim
,rtrim
undtrim
. Nur für den Fall, dass jemand HintergrundinformationenC
hatFoxPro
oderVisual Basic
einspringtRuby
.2.1.6 :002 > string = " White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :003 > string = " White spaces in me".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :004 > string = "White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :005 >
quelle
Ich würde so etwas verwenden:
quelle
Ich bin etwas spät dran, aber ich entferne nachfolgende und führende Leerzeichen mit
strip!
. Wenn Sie ein Array haben, wie ich es getan habe, musste ich das Array durchlaufen und es nach dem Ende der Instanz speichern. Das ! hat sich darum gekümmert. Dadurch wurden alle Leerzeichen am Ende oder am Anfang entfernt, nicht nur das erste führende oder das letzte nachfolgende.Zum Beispiel:
Dies würde ausgegeben werden zu: ["Hallo", "Melanie", "ist", "neu", "zu", "Programmierung"]. Ich habe dies in einem Video weiter untersucht / geteilt, das ich gemacht habe, um diesen Code für ähnliche Fragen hervorzuheben, die ich hatte .
Ich bin neu in der Programmierung und die Verwendung von Strip hat nicht funktioniert, da es nach dem Ende der Schleife nicht im Array gespeichert wurde.
quelle
Sie können dies versuchen:
um dies zu bekommen:
oder wenn Sie eine einzelne Zeichenfolge möchten, verwenden Sie einfach:
quelle