文字列リテラルのコード分析とヘルパー
プレーン文字列
コードでプレーンな文字列を扱う際、JetBrains Rider がどのように役立つかは次のとおりです:
デフォルトで、JetBrains Rider はすべての非逐語文字列における正しいエスケープシーケンスと誤ったエスケープシーケンスをハイライトします:

キャレットが文字列内にあるときに Alt+Enter を押し、対応する コンテキストアクションを選択することで、通常の文字列を逐語的な文字列に変換したり、元に戻したりできます。 これは、補間された文字列でも機能します。
文字列リテラルを分割するには、 Enter を押すだけです。
文字列に正規表現が含まれている場合、JetBrains Rider はその構文とエラーをハイライトし、式内でのコード補完を支援します。 詳細については、 正規表現の支援 を参照してください。
同様に、JetBrains Rider に文字列リテラル内の HTML を解析させることもできます。 JetBrains Rider に文字列リテラル内の特定の言語を認識させるには、対応する コンテキストアクションを使用するか、文字列リテラルの直前にコメント
/*language=regexp|jsregexp|html*/を追加できます。文字列内の一部の部分文字列を選択して、自動的に 部分文字列の変数を導入できます。
プロジェクトがローカライズ可能であれば、自動的に 文字列を resource に移動できます。
システム文字列のフォーマット方法
JetBrains Rider は、 String.Format、 Text.StringBuilder.AppendFormat、 Console.WriteLine など、すべての .NET 文字列フォーマットメソッドのフォーマット文字列と引数を解析します。
文字列フォーマットメソッドの使用時、JetBrains Rider はプレースホルダーの書式設定をハイライトし、キャレットがいずれかにあるときはプレースホルダーの書式設定と対応する引数も同期的にハイライトします:

引数とプレースホルダーの書式設定が一致しない場合(引数が不足していると実行時に FormatException が発生します)、JetBrains Rider は不足または冗長な引数について警告を生成します:

この問題は、警告の上で Alt+Enter を押すことで簡単に解決できます。 JetBrains Rider は、不足している引数を自動的に追加するか、不一致のプレースホルダーの書式設定を削除する提案をします。
JetBrains Rider は、他の文字列フォーマットメソッド内にある冗長な文字列フォーマットメソッドの呼び出しを検出し、削除するのにも役立ちます。 例えば:

文字列リテラルや変数の連結をすばやく変換するには、連結内の任意の場所で Alt+Enter を押し、 To String.Format の呼び出し コンテキストアクションを使用します。 例: このコンテキストアクションを次のメソッドの return ステートメントに適用する
それは次のように変換されます:
また、コンテキストアクションを使用して、文字列の書式プレースホルダと引数を自動的に追加または削除することもできます。 文字列リテラル内で フォーマット引数を挿入する アクションを呼び出すと、JetBrains Rider は適切なインデックスを持つ新しいプレースホルダーを挿入し、すぐに引数の入力ができる位置へ移動します。 このアクションはプレーンな文字列でも呼び出すことができます。 この場合、JetBrains Rider は自動的に String.Format コールへ変換します。
フォーマットプレースホルダーを対応する引数とともにすばやく削除するには、キャレットをプレースホルダーに置き、 Alt+Enter を押して、 フォーマット引数を削除する を選択します。
カスタム文字列フォーマットメソッドの場合
カスタム文字列フォーマットメソッドでコード分析および支援機能を有効にするには、 JetBrains.Annotations 名前空間の [StringFormatMethod] および [StructuredMessageTemplate] 属性を使用します。
カスタム文字列フォーマットメソッド ShowError を考えてみましょう。
下記のようにメソッドが誤って呼び出された場合、JetBrains Rider では不足引数の検出ができません:

JetBrains Rider にカスタム文字列フォーマット方法を認識させる
JetBrains.Annotations名前空間を参照するには、 ソースコードのアノテーション セクションを参照してください。カスタム文字列フォーマットメソッドには
[StringFormatMethodAttribute]属性を付与します。この属性は引数として書式文字列パラメーターの名前を 1 つ取ります:[StringFormatMethod("formatString")] public void ShowError(string formatString, params object[] args) { // some custom logic Console.WriteLine(formatString, args); }このカスタムフォーマットメソッドが呼び出された際は、JetBrains Rider が不足している引数について警告できます。 さらに、 引数の追加 クイックフィックスを使用すると、挿入が簡単になります。

あるいは、フォーマットされた文字列を受け入れるパラメーターに
[StructuredMessageTemplateAttribute]のアノテーションを付けます。void LogNewUser([StructuredMessageTemplate] string message, params string[] args) { // Log new user } void Test() { // Warning: Non-existing argument in format string LogNewUser("User created: {username}"); }この 2 番目のアプローチでは、上の例の
usernameのように、カスタム文字列をプレースホルダーとして使用できます。
補間された文字列
C# の最新バージョンは、 String.Format メソッドのより洗練された代替手段である 補間文字列を提供します。 そのため、JetBrains Rider は String.Format の使用箇所をハイライトし、補間文字列に変換することを提案します。 クイックフィックスを使用して、現在の使用箇所または 特定の範囲内のすべての使用箇所に対して、数回のキーストロークで変換を適用できます。

補間文字列に式が含まれていない場合、JetBrains Rider は $ 記号を冗長なものとしてハイライトし、削除できるようにします:

文字列の入力に没頭しているときに、文字列の先頭に $ をすばやく追加する必要がある場合は、 Alt+Enter を押して 文字列補間へ変換する を選択できます。
その後、 補間引数を挿入する を選択すると、JetBrains Rider が引数用のプレースホルダー { } をキャレット位置に追加します。
