加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – ALL CAPS to Normal case

发布时间:2020-12-17 02:29:17 所属栏目:百科 来源:网络整理
导读:我正试图找到一个关于如何转换这样的东西的优雅解决方案 ALL CAPS TEXT. “WHY ANYONE WOULD USE IT?” THIS IS RIDICULOUS! HELP. ……对于常规案例.我可以或多或少地找到所有句子起始字符: (?=^|(. "?)|(! ))[A-Z] #this regex sure should be more com
我正试图找到一个关于如何转换这样的东西的优雅解决方案

ALL CAPS TEXT. “WHY ANYONE WOULD USE IT?” THIS IS RIDICULOUS! HELP.

……对于常规案例.我可以或多或少地找到所有句子起始字符:

(?<=^|(. "?)|(! ))[A-Z] #this regex sure should be more complex

但是(标准)Ruby既不允许使用lookbehinds,也不可能将.capitalize应用于gsub替换.我希望我能做到这一点:

"mytext".gsub(/my(regex)/,'1'.capitalize)

但目前的工作解决方案是

"mytext".split(/. /).each {|x| p x.capitalize } #but this solution sucks

解决方法

首先,请注意您尝试做的只是近似值.

>您无法正确判断句子边界的位置.您可以将其近似为整个字符串的开头,或者在句点,问号或感叹号后跟空格之后.但是,你会错误地将“经济”资本化为“美国经济”.
>您无法正确判断哪些词应该大写.例如,“约翰”将是“约翰”.

在许多情况下,您可能希望进行一些自然语言处理以获得接近正确的结果,但这些方法仅在概率上是正确的.你永远不会得到完美的结果.

了解这些限制,您可能希望:

mytext.gsub(/.*?(?:[.?!]s+|z)/,&:capitalize)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读