2013-03-07 98 views
2

我经常发现,用户在注册时输入的格式非常差。我从Paypal IPN和其他支付网关获得各种疯狂​​的格式化,甚至从所有小写字母到全部大写字母,直到完全搞砸为止。名称修复/验证?

我用这个信息做的一件事是发送电子邮件和提供问候,但我不喜欢格式不好的名字。以前有人想过这个,想出一个快乐的中路解决方案吗?例如,我认识到简单地纠正看起来似乎错误的拼写形式将会是一种糟糕的形式,但至少应该修正“合理的内容”是明智的。至少是大写字母。也许仅仅在第一个和最后一个姓名字符串中提供每个不同“单词”的首字母就足够了?

还是有更好的方法?也许是一个像“McBerry”和“van Buuren”这样的通用名字大写的数据库?宝石还是一些这样的工具?只是有点好奇。也许把这个想法放在这个话题上是愚蠢的,但我真的很喜欢在与用户的交流中尽可能地保持礼貌和专业,而不像平常那​​样使用格式不好的名字。

+1

不会有完美的解决方案,因为我的姓可以证明。有些人是LaFortune ... – 2013-03-07 16:43:51

回答

0

你可以希望做的是利用他们的第一个/最后一个/中间名字的第一个字母最佳:

bob".capitalize => "Bob"

红宝石:

capitalize → new_str click to toggle source 

Returns a copy of str with the first character converted to uppercase and the remainder to lowercase. Note: case conversion is effective only in ASCII region. 

"hello".capitalize #=> "Hello" 
"HELLO".capitalize #=> "Hello" 
"123ABC".capitalize #=> "123abc" 

您还可以使用downcase把所有东西都平齐,然后capitalize使它“正确”。

例如:

fName = "jIMMY" 
lName = "sMITH" 

fName.downcase 
lName.downcase 

fName.capitalize 
lNmae.capitalize 

puts fName + lName => Jimmy Smith 

但是,像VanBuuren这样的名字,可能会有点困难。

这是一个Ruby字符串的链接,它有一些方法可能会帮助您完成任务。

http://www.ruby-doc.org/core-2.0/String.html

+0

是的,这已经是我想到的了。只是希望有一些更具洞察力或更多的报道。 – ylluminate 2013-03-11 21:44:28