一尘不染

有没有人有好的Proper Case算法

algorithm

是否有人拥有受信任的适当案例或PCase算法(类似于UCase或Upper)?我正在寻找一个值,例如"GEORGE BURDELL""george burdell"将其转换为"George Burdell"

我有一个简单的例子可以处理简单的情况。理想的情况是拥有可以处理诸如的东西"O'REILLY"并将其转换为"O'Reilly",但是我知道这更难。

如果可以简化的话,我主要关注英语。


更新: 我使用C#作为语言,但是我几乎可以转换任何东西(假设存在功能)。

我同意麦当劳的情景很艰难。我想在我的O’Reilly示例中提及这一点,但在原始帖子中却没有提及。


阅读 314

收藏
2020-07-28

共1个答案

一尘不染

除非我误解了您的问题,否则我认为您不需要自己动手,TextInfo类可以为您完成。

using System.Globalization;

CultureInfo.InvariantCulture.TextInfo.ToTitleCase("GeOrGE bUrdEll")

会返回“乔治·伯德尔(George Burdell)。如果涉及一些特殊规则,您可以使用自己的文化。

更新: Michael(在对此答案的评论中)指出,如果输入全为大写,则此方法将无效,因为该方法将假定它是首字母缩写词。幼稚的解决方法是在将文本提交给ToTitleCase之前将文本放到.ToLower()处。

2020-07-28