2010-01-25 16 views

Odpowiedz

34

Jeśli przez "białą przestrzeń" rozumiesz w znaczeniu wyrażeń regularnych, która jest dowolną z znaków spacji, tabulacji, znaków nowej linii, znaku powrotu karetki lub (jak sądzę) formularza, wówczas każda z odpowiedzi będzie działać:

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

lub nawet (nie wcześniej wspomniano)

s[/\s/] 

Jeśli jesteś zainteresowany tylko sprawdzanie znak spacji, a następnie spróbować swoich preferencji

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

Od IRB (Ruby 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

Po aktualizacji tej wersji, [String # match?] (Http://ruby-doc.org/core-2.4.1/String.html#method-i-match-3F) zadebiutował w Ruby v2 .4, więc teraz można również napisać 's.match? (/ \ S /)'. –

2

można wykorzystać indeks

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

Czy to nie tab? – Eli

4

Zwykle odbywa się to tak:

str =~ /\s/ 

Można przeczytać o wyrażenia regularne here.

0

bardzo lubię za pomocą licznika do tego.

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


"hello 1".count(" ") > 0 #=> true 
Powiązane problemy