2013-10-06 260 views
0

在循環遍歷文本行時,如何使用if語句(或類似語句)檢查字符串是否爲單個單詞?檢查字符串是否包含一個或多個字

def check_if_single_word(string) 
    # code here 
end 

s1 = "two words" 
s2 = "hello" 

check_if_single_word(s1) -> false 
check_if_single_word(s2) -> true 
+0

第一修剪字符串,則搜索空間,或匹配正則表達式。我不知道紅寶石,所以不能提供代碼。 – Bathsheba

+0

這爲什麼值得一個-1?如果我們不能用這個論壇來問簡單的問題,那爲什麼不呢? –

+1

我不是downvoter(或upvoter),但這個問題可以被解釋爲在你提出問題之前進行的研究水平的邊界。 – Bathsheba

回答

4

既然你問的是'最Ruby的方式,我的方法重命名爲single_word?

一種方法是檢查是否存在空格字符。

def single_word?(string) 
    !string.strip.include? " " 
end 

但是,如果你想允許一組特定的滿足您的定義字,也許還包括撇號和連字符的字符,使用正則表達式:

def single_word?(string) 
    string.scan(/[\w'-]+/).length == 1 
end 
+0

我會* * 1 *給你的第一個代碼...... :)這是'string.include? 「」。 –

1

我會檢查字符串中是否存在空格。

def check_if_single_word(string) 
    return !(string.strip =~//) 
end 

.strip可除去會在開始和字符串的末尾存在過量的空白。

!(myString =~//)表示該字符串與單個空格的正則表達式不匹配。 同樣,你也可以使用!string.strip[/ /]

1

這裏是一些代碼可以幫助你:

def check_if_single_word(string) 
    ar = string.scan(/\w+/) 
    ar.size == 1 ? "only one word" : "more than one word" 
end 

s1 = "two words" 
s2 = "hello" 
check_if_single_word s1 # => "more than one word" 
check_if_single_word s2 # => "only one word" 

def check_if_single_word(string) 
    string.scan(/\w+/).size == 1 
end 

s1 = "two words" 
s2 = "hello" 
check_if_single_word s1 # => false 
check_if_single_word s2 # => true 
+0

我喜歡第三行「:」的布爾選項。給予好評! –

0

一個Ruby之道。擴展CALSS String

class String 

    def one? 
    !self.strip.include? " " 
    end 

end 

然後使用"Hello world".one?檢查是否字符串包含一個或多個字。

+0

你不需要使用'self' ... –

+0

我不會推薦給初學者修改內建函數。我也不會推薦「one?」這個名字,因爲它不夠明確。 –

+0

另外,您有錯誤。嘗試在irb中執行此操作,您會看到它。 –

2

按照你的意見給予了這個詞的定義:

[A] stripped string that doesn't [include] whitespace 

代碼將

def check_if_single_word(string) 
    string.strip == string and string.include?(" ").! 
end 

check_if_single_word("two words") # => false 
check_if_single_word("New York") # => false 
check_if_single_word("hello") # => true 
check_if_single_word(" hello") # => false 
+0

strip == self - 你使用方法'strip'作爲獨立的對象嗎?這可以用所有方法完成嗎?我第一次看到這個。 –

+0

這是一個錯誤。 – sawa

+0

我第一次看到另一個有趣的事情,在聲明之後作爲一種方法否定。那麼//string.include?(「」)。! ==!string.include?(「」)//? –

相關問題