我正在寻找一种方法来将String中的单词更改为SentenceCase。
我知道方法TextInfo.ToTitleCase
,但这对德语来说并不合适。就像方法文档中那样:
Input Language Expected result Actual result
Per anhalter durch die Galaxis German Per Anhalter durch die Galaxis Per Anhalter Durch Die Galaxis
还有另一种方法可以将此权利转换(获得预期结果)吗?动词和形容词应该是小写的。
有很多问题,但我没有找到一个正确用德语工作的方法。
修改
我试过了
var ti = new CultureInfo("de-DE", false).TextInfo;
var res = ti.ToTitleCase("Per anhalter durch die Galaxis");
res知道
Per Anhalter Durch Die Galaxis
答案 0 :(得分:1)
您想要修复German display of nouns和仅限名词的大小写。 .NET中没有内置的功能。你选择的方法TextInfo.ToTitleCase()
对于它来说太“愚蠢”了,因为它只是大写每个单词的第一个字母。
据我所知,你需要自然语言处理。字典不会削减字典,因为有些单词可以解释为名词(应该是大写)和动词(不应该大写)。
或者,换句话说(并忽略名词部分一分钟):当你遇到“sie”时,你怎么知道“他们”(“sie”)或“你”,正式(“ Sie“)是指?
你可以尝试一下,用一种天真的方法不会产生完美但可能接受的结果:
的制备:将
代码:
答案 1 :(得分:1)
ToTitleCase
简单而天真地更改字符串中每个单词的大小写,以便单词的第一个字母为大写。文化信息将用于确定什么算作单词的第一个字母(例如哪些符号/标点符号单独的单词),但它不用于确定给定语言的哪些单词应该(不)被标记。你需要为这种语言理解水平推出自己的解决方案