【发布时间】:2010-11-30 15:45:30
【问题描述】:
我需要一个字符串,并将其中的单词大写。某些单词(“in”、“at”等)没有大写,如果遇到则更改为小写。第一个单词应始终大写。像“McFly”这样的姓氏不在当前范围内,所以同样的规则将适用于他们——只有首字母大写。
例如:“of mouse and men By CNN”应更改为“Of Mice and Men by CNN”。 (因此 ToTitleString 在这里不起作用。)
最好的方法是什么?
我想用空格分割字符串,检查每个单词,如有必要,更改它,然后将它连接到前一个单词,等等。 这似乎很天真,我想知道是否有更好的方法来做到这一点。我正在使用 .NET 3.5。
【问题讨论】:
-
程序应该如何理解CNN应该全部大写?
-
@Chris:我认为他的意思是 ToTitleCase ...?请参阅此处msdn.microsoft.com/en-us/library/… 和“备注”以了解为什么它不适用。
-
@Øyvind:该程序可能会尊重现有的大写字母,并且只会将大小写更改为大写,而不是小写。示例中唯一不起作用的地方是“By”变成“by”的地方。当遇到全小写的“by”时,我认为应该将其匹配到字典中以保留为小写,但是当遇到“By”时,我真的认为应该这样保留,因为我们无法区分它来自名为“By”的潜在城市(或其他城市)。
-
看起来 ToTitleCase 可以通过一些小的调整来做到这一点,假设你只想要英语而不想要其他文化。
标签: c# string capitalization