在循環遍歷文本行時,如何使用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
在循環遍歷文本行時,如何使用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
既然你問的是'最Ruby的方式,我的方法重命名爲single_word?
一種方法是檢查是否存在空格字符。
def single_word?(string)
!string.strip.include? " "
end
但是,如果你想允許一組特定的滿足您的定義字,也許還包括撇號和連字符的字符,使用正則表達式:
def single_word?(string)
string.scan(/[\w'-]+/).length == 1
end
我會* * 1 *給你的第一個代碼...... :)這是'string.include? 「」。 –
我會檢查字符串中是否存在空格。
def check_if_single_word(string)
return !(string.strip =~//)
end
.strip可除去會在開始和字符串的末尾存在過量的空白。
!(myString =~//)
表示該字符串與單個空格的正則表達式不匹配。 同樣,你也可以使用!string.strip[/ /]
。
這裏是一些代碼可以幫助你:
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
我喜歡第三行「:」的布爾選項。給予好評! –
一個Ruby之道。擴展CALSS String
class String
def one?
!self.strip.include? " "
end
end
然後使用"Hello world".one?
檢查是否字符串包含一個或多個字。
你不需要使用'self' ... –
我不會推薦給初學者修改內建函數。我也不會推薦「one?」這個名字,因爲它不夠明確。 –
另外,您有錯誤。嘗試在irb中執行此操作,您會看到它。 –
按照你的意見給予了這個詞的定義:
[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
strip == self - 你使用方法'strip'作爲獨立的對象嗎?這可以用所有方法完成嗎?我第一次看到這個。 –
這是一個錯誤。 – sawa
我第一次看到另一個有趣的事情,在聲明之後作爲一種方法否定。那麼//string.include?(「」)。! ==!string.include?(「」)//? –
第一修剪字符串,則搜索空間,或匹配正則表達式。我不知道紅寶石,所以不能提供代碼。 – Bathsheba
這爲什麼值得一個-1?如果我們不能用這個論壇來問簡單的問題,那爲什麼不呢? –
我不是downvoter(或upvoter),但這個問題可以被解釋爲在你提出問題之前進行的研究水平的邊界。 – Bathsheba