大写和标题大小写的区别

30
“uppercase”和“titlecase”之间有什么区别?说实话,我以前从未听说过“titlecase”。在Java中,这两者是分开的方法:Character.isTitleCase(char)Character.isUpperCase(char)。一些网站将其定义如下:TitleCase:匹配结合一个大写字母和一个小写字母的字符,例如Nj和Dz。但其中必须还有更多内容:isTitleCase(char)方法只接受1个字符。如果真是这样的话,那么这个方法必须至少需要2个字符。

2
标题与问题有什么关系? - Jonas Schäfer
我的错误,同时提出了两个问题。感谢您的纠正。 - bvdb
可能是 String capitalize - better way 的重复问题。 - Jim G.
混淆ToUpper和ToTitle - phuclv
请注意,例如克罗地亚U+01C4到U+01CC的DŽDždžLJLjljNJNjnj单个字符,现在比较NJNj - Andrey Tyukin
3个回答

26

它仅接受一个Unicode字符。事实证明,DŽ实际上只是一个字符:看看它在等宽字体中的显示:DŽ。其标题大小写版本分别为Dž,还有一个小写版本dž


1
哇,我完全不知道!我猜这是在特定的编程语言中使用的吗?(不是英语或法语对吧?) - bvdb
我能想到的最接近的情况是œ和æ,但它们的行为不同:http://www.fileformat.info/info/unicode/char/0153/index.htm - Glorfindel
4
这种情况发生的原因是为了与旧编码的往返兼容性,这些旧编码中包含这样的字符。例如,在MacRoman编码中,字节0xDE映射到U+FB01 LATIN SMALL LIGATURE FI(即一个 字符),而字节0xDF映射到U+FB02 LATIN SMALL LIGATURE FL(即一个 字符)。往返保证可以让您在MacRoman和Unicode之间进行无损转换,而不会更改任何内容。 - tchrist

5

我知道这个问题以前已经被回答过了,但是我只是添加一个非常快速的解释:

组合字符:

  • DŽ = 仅大写
  • dž = 仅小写
  • Dž = 仅首字母大写

单个字符:

  • D = 大写和首字母大写
  • d = 仅小写

3

什么是标题大小写:

  • 在某些语言和字符集中,存在二连字母 - 即由两个可读字符组成的单个Unicode代码点,以一种组合字形显示。

  • 只有二连字母才能进行标题大小写 - 例如“dz”的小写二连字母对应于大写“DZ”和标题大小写“Dz”。

  • 因此,“大写”,“标题大小写”和“小写”

它仅接受一个Unicode字符。

不完全正确。

希腊语有很多标题大小写字形,而且拉丁文的标题大小写比“DZ”更多。

要查看世界上所有标题大小写字符,请启动Excel(或免费的Power BI Desktop应用程序),然后选择数据/获取数据/空白查询,并执行以下Power Query M语言查询,将其复制并粘贴到查询/高级编辑器:

let
 downloaded = Web.Contents("https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt"),
 csv = Csv.Document(downloaded,
                    [Delimiter=";",
                      Encoding=65001, // UTF-8
                      QuoteStyle=QuoteStyle.None // allow line breaks within the quoted string
                    ]),
    #"Removed Other Columns" = Table.SelectColumns(csv,{"Column1", "Column2", "Column3"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns",{{"Column1", "Character code"}, {"Column2", "Character name"}, {"Column3", "Category"}}),
    #"Added Custom" = Table.AddColumn(#"Renamed Columns", "Glyph", each Character.FromNumber(Expression.Evaluate("0x" & [Character code]))),
    #"Reordered Columns" = Table.ReorderColumns(#"Added Custom",{"Character code", "Glyph", "Character name", "Category"}),
    #"Filtered Rows" = Table.SelectRows(#"Reordered Columns", each [Category] = "Lt")
in
    #"Filtered Rows"

'ij' 的标题大小写是什么? - Ṃųỻịgǻňạcểơửṩ
1
@Ṃųỻịgǻňạcểơửṩ,Unicode字符集中不存在“ij”的单个字符。您可以将其输入为两个单独的字符“Ij”以获得所需的效果,但只有单个字母“I”可以被视为标题大小写,而不是组合的“Ij”,因为它们是两个单独的字符。 - nxasdf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接