ruby-on-rails - 仅将字符串的第一个字符大写并保留其他字符? ( rails )

标签 ruby-on-rails string capitalization

我试图让 Rails 将字符串的第一个字符大写,并保留所有其他字符。我遇到了一个问题,“我来自纽约”变成了“我来自纽约”。

我将使用什么方法来选择第一个字符?

谢谢

编辑:我尝试实现 macek 建议的内容,但收到“未定义方法‘大写'”错误。代码在没有大写行的情况下工作正常。感谢您的帮助!

def fixlistname!
  self.title = self.title.lstrip + (title.ends_with?("...") ? "" : "...")
  self.title[0] = self.title[0].capitalize
  errors.add_to_base("Title must start with \"You know you...\"") unless self.title.starts_with? 'You know you'
end

编辑 2: 成功了。感谢您的帮助!

编辑 3:等等,不,我没有...这是我的列表模型中的内容。

def fixlistname!
  self.title = self.title.lstrip + (title.ends_with?("...") ? "" : "...")
  self.title.slice(0,1).capitalize + self.title.slice(1..-1)
  errors.add_to_base("Title must start with \"You know you...\"") unless self.title.starts_with?  'You know you'
end

编辑 4:尝试了 macek 的编辑,但仍然收到未定义的方法`capitalize'"错误。我可能做错了什么?

def fixlistname!
  self.title = title.lstrip
  self.title += '...' unless title.ends_with?('...')
  self.title[0] = title[0].capitalize
  errors.add_to_base('Title must start with "You know you..."') unless title.starts_with?("You know you")
end

编辑 5: 这很奇怪。我可以通过使用下面的行来消除未定义的方法错误。问题是它似乎用数字替换了第一个字母。例如,它不是将 You 中的 y 大写,而是将 y 转换为 121

self.title[0] = title[0].to_s.capitalize

最佳答案

这应该可以做到:

title = "test test"     
title[0] = title[0].capitalize
puts title # "Test test"

关于ruby-on-rails - 仅将字符串的第一个字符大写并保留其他字符? ( rails ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646709/

相关文章:

python - 将字符串拆分为包含许多 char pro 项目的数组

string - Lua:删除字符串中的特定字符

swift - 如何使用Swift将句子的第一个字符大写

mysql - Ruby on Rails : ActiveRecords' first_or_create is very slow

ruby-on-rails - Vue.js 在 if 评估后清除数据

ruby-on-rails - Rails capybara 特性规范 No 'Access-Control-Allow-Origin'

php - strtoupper 可以处理字母和数字吗

r - 如何将R中除某些字母外的所有字母大写

java - Hibernate属性名称大写问题

mysql - Rails 4 - 如果另一个表中没有特定记录,如何从表中选择数据?