1

在遍历文本行时,执行 if else 语句(或类似语句)以检查字符串是否为单个单词的最简洁方法(大多数“Ruby”)是什么?

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
4

5 回答 5

5

既然你问的是“最 Ruby”的方式,我会将该方法重命名为single_word?

一种方法是检查是否存在空格字符。

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

但是,如果您想允许满足对单词的定义的特定字符集,可能包括撇号和连字符,请使用正则表达式:

def single_word?(string)
  string.scan(/[\w'-]+/).length == 1
end
于 2013-10-06T19:42:00.627 回答
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
于 2013-10-06T20:28:19.823 回答
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
于 2013-10-06T19:39:46.243 回答
1

红宝石之路。延长课程String

class String

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

end

然后用于"Hello world".one?检查字符串是否包含一个或多个单词。

于 2013-10-06T19:54:09.427 回答
1

我会检查字符串中是否存在空格。

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

.strip 将删除可能存在于字符串开头和结尾的多余空格。

!(myString =~ / /)表示字符串不匹配单个空格的正则表达式。同样,您也可以使用!string.strip[/ /].

于 2013-10-06T19:28:32.913 回答