ruby – ALL CAPS to Normal case

ruby – ALL CAPS to Normal case,第1张

概述我正试图找到一个关于如何转换这样的东西的优雅解决方案 ALL CAPS TEXT. “WHY ANYONE WOULD USE IT?” THIS IS RIDICULOUS! HELP. ……对于常规案例.我可以或多或少地找到所有句子起始字符: (?<=^|(\. \"?)|(! ))[A-Z] #this regex sure should be more complex 但是(标准)Ruby 我正试图找到一个关于如何转换这样的东西的优雅解决方案

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)/,''.cAPItalize)

但目前的工作解决方案是

"mytext".split(/\. /).each {|x| p x.cAPItalize } #but this solution sucks
解决方法 首先,请注意您尝试做的只是近似值.

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

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

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

mytext.gsub(/.*?(?:[.?!]\s+|\z)/,&:cAPItalize)
总结

以上是内存溢出为你收集整理的ruby – ALL CAPS to Normal case全部内容,希望文章能够帮你解决ruby – ALL CAPS to Normal case所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1278108.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存