3

組み込みの .Net メソッドTextInfo.ToTitleCaseはフランス語の文を正常に処理しますが、問題を引き起こすサンプルがいくつかあります。コメントを参照してください(以下にコピー):

通常、タイトル ケーシングは、単語の最初の文字を大文字に変換し、残りの文字を小文字に変換します。ただし、このメソッドは現在、頭字語など、完全に大文字の単語を変換するための適切な大文字と小文字の区別を提供していません。次の表は、メソッドが複数の文字列をレンダリングする方法を示しています。

入力 言語 期待される結果 実結果
戦争と平和 英語 戦争と平和 戦争と平和
アンホルター ダーチ ダイ ギャラクシーあたり ドイツ人 Anhalter durch die Galaxis あたり Per Anhalter Durch Die Galaxis
レ ノフラージュ ディタック フランス語 レ ノフラジェ ディタック レ ノフラジェ ディタック

上に示したように、TextInfo.ToTitleCaseメソッドは、必ずしも言語的に正しいとは限らない任意の大文字と小文字の動作を提供します。言語的に正しい解決策には追加の規則が必要ですが、現在のアルゴリズムはやや単純で高速です。将来、この API を遅くする権利を留保します。

TextInfo.ToTitleCaseメソッドの現在の実装では、入力文字列と同じ長さの出力文字列が生成されます。ただし、この動作は保証されておらず、将来の実装で変更される可能性があります。

Humanizer ライブラリ内に、特定のカルチャでタイトル化するオプションはありますか?

4

1 に答える 1

0

Humanizerライブラリへの良い追加のように思えますが、現在はサポートされていません。

フランス語のタイトル ケーシングを実装する場合は、JavaScript のtitlecase-frenchライブラリを調べて、定義されている適切なルールセットに従って C# で書き直します。

主なルールは 5 つあります。

  • タイトルは常に大文字の単語で始まります
  • 単語の特定のリストは小文字です
  • 引用の後 ' 単語は、引用の前の単語に応じて小文字または大文字にすることができます
  • 頭字語は大文字
  • 特殊な大文字 (アクセント付きなど) は、単純なバージョンに置き換えられます

TextInfo.ToTitleCase備考のサンプル( les naufragés d'ythaq ) は、次の場合に期待どおりに動作しtitlecase-frenchます。

console.log(require('titlecase-french').convert("les naufragés d'ythaq"));
// Les Naufragés d'Ythaq
于 2020-12-10T13:56:49.500 に答える