Excel或Rails,首字母大写,将所有上限更改为大写,但尊重大写中间名

时间:2016-11-22 16:27:39

标签: ruby-on-rails ruby excel

给出如下名称:

理查德应该是理查德

理查德应该是理查德

richAnne应该是RichAnne

我宁愿在excel中完成,但我的另一个选择是使用Rails。

4 个答案:

答案 0 :(得分:0)

试试这个:

new_string = string.slice(0,1).capitalize + string.slice(1..-1)

答案 1 :(得分:0)

这适用于您的示例。

SUCCESS

答案 2 :(得分:0)

在Rails中你可以这样做:

>> 'richard'.titleize.split.join
=> "Richard"
>> 'RICHARD'.titleize.split.join
=> "Richard"
>> 'richAnne'.titleize.split.join
=> "RichAnne"

前两种情况不需要.split.join,但这是最后一种情况。

答案 3 :(得分:0)

只是为了比较,在Excel中你可以尝试这个

=IF(SUM((CODE(MID(A1&REPT(" ",10),COLUMN(A:J),1))>=65)*(CODE(MID(A1&REPT(" ",10),COLUMN(A:J),1))<=90))=LEN(A1),PROPER(A1),UPPER(LEFT(A1))&RIGHT(A1,LEN(A1)-1))

计算名称中的大写字母数,但与Ruby解决方案相比,它看起来非常混乱。改变以适应您期望的最长名称。

这是一个数组公式,必须使用 Ctrl Shift 输入

输入

您也可以通过检查名称中是否有任何小写字母来执行此操作,如果是,请将第一个字母大写。

=IF(SUM(--ISNUMBER(FIND(MID("abcdefghijklmnopqrstuvwxyz",COLUMN(A:Z),1),A1))),UPPER(LEFT(A1))&RIGHT(A1,LEN(A1)-1),PROPER(A1))

模式匹配解决方案更整洁,但需要VBA。

enter image description here