Ruby on rails 仅当单词';不全是帽子吗?
有没有一种方法可以将字符串中的小写单词仅大写 例如,此字符串:Ruby on rails 仅当单词';不全是帽子吗?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,有没有一种方法可以将字符串中的小写单词仅大写 例如,此字符串: WOrd ABC WOrd 应返回: Word ABC Word 注意:第一个单词仍应为“句子大小写” 我在rails中尝试了人性化和标题库功能,但它们也使用了小写单词,这些单词都是大写的(通常代表一些首字母缩写词,不应该使用小写) 更新: 在以下答案的帮助下,我终于解决了这个问题: def fix(string) s = [] string.split.each do |word| if word.swapcase
WOrd ABC WOrd
应返回:
Word ABC Word
注意:第一个单词仍应为“句子大小写”
我在rails中尝试了人性化
和标题库
功能,但它们也使用了小写单词,这些单词都是大写的(通常代表一些首字母缩写词,不应该使用小写)
更新:
在以下答案的帮助下,我终于解决了这个问题:
def fix(string)
s = []
string.split.each do |word|
if word.swapcase != word.downcase
s << word.downcase
else
s << word
end
end
s = s.join(' ').chomp(' ')
s[0] = s[0].capitalize
return s
end
def修复(字符串)
s=[]
string.split.each do|单词|
如果word.swapcase!=唐卡斯
您可能只需要检查swapcase和小写是否相同
if word.swapcase != word.downcase
s << word.downcase + " "
else
s << word + " "
if word.swapcase!=唐卡斯
您可能只需要检查swapcase和小写是否相同
if word.swapcase != word.downcase
s << word.downcase + " "
else
s << word + " "
if word.swapcase!=唐卡斯
怎么样
string = 'WOrd ABC Word wOrD WOrD'
string.split(' ').map.with_index {|w,i|
/^[A-Z]+$/.match(w) ? w : i == 0 ? w.capitalize : w.downcase
}.join(' ')
产生:
=> "Word ABC word word word"
那么:
string = 'WOrd ABC Word wOrD WOrD'
string.split(' ').map.with_index {|w,i|
/^[A-Z]+$/.match(w) ? w : i == 0 ? w.capitalize : w.downcase
}.join(' ')
产生:
=> "Word ABC word word word"
我更喜欢创建提供人类可读名称的小方法:
class String
def all_caps?
swapcase == downcase
end
def downcase_all_but_acronyms
all_caps? ? self : downcase
end
end
那么你的答案是:
string.split.map(&:downcase_all_but_acronyms)
我更喜欢创建提供人类可读名称的小方法:
class String
def all_caps?
swapcase == downcase
end
def downcase_all_but_acronyms
all_caps? ? self : downcase
end
end
那么你的答案是:
string.split.map(&:downcase_all_but_acronyms)
如果字符串中只有一个单词,则失败。例:WorD
好奇。它非常适合我,字符串中只有一个单词string=“WorD”
返回=>“WorD”
您是正确的。我在分配字符串变量时出错。正在打印另一个字符串。啊。。。但如果你有标点符号,它确实会失败。如果有一个word,word,word
中间的单词,
会转换成小写。我可以通过将正则表达式更改为/^[a-Z0-9!%&(),;“:”?“]+$/
有没有更简单的方法?如果字符串中只有一个单词,它就会失败。例如:word
好奇。如果字符串中有一个单词,它就非常适合我。string=“word”
返回=>单词“
你说得对。我在分配字符串变量时出错。正在打印另一个字符串。啊。。。但如果你有标点符号,它确实会失败。如果有一个word,word,word
中间的单词,
会转换成小写。我可以通过将正则表达式更改为/^[a-Z0-9!%&(),;“:”?“]+$/
有没有更简单的方法?值得等待,直到你有足够的声誉来回答自己的问题,然后将你的更新作为答案发布,而不是将你的答案包含在问题中。谢谢。我会回来更新此线程。值得等待,直到你有足够的声誉来回答自己的问题,然后发布你的更新作为答案,而不是将您的答案包含在问题中。谢谢。我会回来更新此线程。