2010-01-25 6 views

Antwort

34

Wenn Sie mit "Leerraum" im Sinne von "Regulärer Ausdruck" meinen, dass Leerzeichen, Tabulatoren, Zeilenumbrüche, Wagenrücklauf oder (ich denke) Form-Feed sind, funktioniert jede der angegebenen Antworten:

s.match(/\s/) 
s.index(/\s/) 
s =~ /\s/ 

oder auch (nicht vorher erwähnt)

s[/\s/] 

Wenn Sie nur daran interessiert sind für ein Leerzeichen in der Überprüfung, dann versuchen Sie Ihre Präferenz von

s.match(" ") 
s.index(" ") 
s =~// 
s[" "] 

Von irb (Rubin 1.8.6):

s = "a b" 
puts s.match(/\s/) ? "yes" : "no" #-> yes 
puts s.index(/\s/) ? "yes" : "no" #-> yes 
puts s =~ /\s/ ? "yes" : "no" #-> yes 
puts s[/\s/] ? "yes" : "no" #-> yes 

s = "abc" 
puts s.match(/\s/) ? "yes" : "no" #-> no 
puts s.index(/\s/) ? "yes" : "no" #-> no 
puts s =~ /\s/ ? "yes" : "no" #-> no 
puts s[/\s/] ? "yes" : "no" #-> no 
+1

Dieses Update brachte [String # match?] (Http://ruby-doc.org/core-2.4.1/String.html#method-i-match-3F) in Ruby v2 auf den Markt .4, so kann man jetzt auch 's.match? (/ \ S /)' schreiben. –

2

Sie ist in der Regel Index

"mystring".index(/\s/) 
+0

Ist kein Tab Whitespace? – Eli

4

Es ist wie diese verwenden kann getan:

str =~ /\s/ 

Sie über reguläre Ausdrücke here lesen kann.

0

Ich genieße wirklich Zählung für diese Verwendung.

"hello 1".count("") #=> 0 
"hello 1".count(" ") #=> 1 
" hello 1".count(" ") #=> 2 


"hello 1".count(" ") > 0 #=> true 
Verwandte Themen