JetBrains Rider 2025.2 Help

代码分析和字符串字面量的辅助功能

在普通字符串中

以下是 JetBrains Rider 在您编码时处理普通字符串时可以帮助您的方式:

  • 默认情况下,JetBrains Rider 会高亮所有非逐字字符串中的正确和错误转义序列:

    字符串中转义序列的高亮

  • 当您的光标位于字符串中并选择相应的 上下文操作时,您可以通过按 Alt+Enter 将普通字符串和逐字字符串进行转换。 这同样适用于插值字符串。

  • 您可以通过按 输入 简单地 拆分字符串字面量

  • 如果字符串包含正则表达式,JetBrains Rider 可以高亮显示其语法和错误,并在表达式中帮助您进行代码补全。 欲了解更多信息,请参阅 正则表达式辅助功能

    同样,您可以让 JetBrains Rider 分析字符串字面量中的 HTML。 为了让 JetBrains Rider 识别字符串字面量中的特定语言,您可以使用相应的 上下文操作 或在字符串字面量之前添加 /*language=regexp|jsregexp|html*/ 注释。

  • 您可以选择字符串中的某个子字符串,并自动 为该子字符串引入一个变量

  • 如果您的项目支持本地化,您可以自动 将字符串移至资源文件

在系统字符串格式化方法中

JetBrains Rider 会分析所有 .NET 字符串格式化方法的格式字符串和参数,例如 String.FormatText.StringBuilder.AppendFormatConsole.WriteLine

在字符串格式化方法的使用中,JetBrains Rider 会高亮显示格式占位符,还会在您的光标位于占位符或对应参数上时同步高亮显示二者:

字符串格式化方法中参数和占位符的高亮显示

如果参数和格式占位符不匹配(如果缺少参数会在运行时导致 FormatException ),JetBrains Rider 会生成缺少或冗余参数的警告:

字符串格式化方法中缺少参数的警告

您可以通过在警告上按 Alt+Enter 来轻松修复此问题。 JetBrains Rider 将建议自动添加缺失的参数,或删除不匹配的格式占位符。

JetBrains Rider 还会帮助您检测并移除在其他字符串格式化方法内部的冗余字符串格式化方法调用。 例如:

对字符串格式化方法的冗余调用

要快速将字符串字面量和变量的连接转换,您可以在连接中按任意位置的 Alt+Enter 并使用 到 String.Format 调用 上下文操作。 例如,如果我们在以下方法的 返回 语句中应用此上下文操作:

public string Greet(string name, int age) { return "Hi, my name is " + name + " and I'm " + age; }

它将被转换为:

public string Greet(string name, int age) { return String.Format("Hi, my name is {0} and I'm {1}", name, age); }

您还可以使用上下文操作在字符串中自动添加或移除格式占位符和参数。 当您在字符串字面量中调用 插入格式实参 操作时,JetBrains Rider 会插入一个具有正确索引的新占位符,并将您定位到可立即开始键入参数的位置。 此操作也可以在普通字符串上调用。 在这种情况下,JetBrains Rider 会自动将其转换为 String.Format 调用。

要快速删除格式占位符及其对应的参数,请将插入符放置在该占位符处,按下 Alt+Enter 并选择 移除格式实参

在自定义字符串格式化方法中

要在自定义字符串格式化方法中启用代码分析和辅助功能,请使用 [StringFormatMethod][StructuredMessageTemplate] 属性,这些属性来自 JetBrains.Annotations 命名空间

以下是一个自定义字符串格式化方法 ShowError 示例:

public void ShowError(string formatString, params object[] args) { // some custom logic Console.WriteLine(formatString, args); }

如果方法调用错误,如下所示,则 JetBrains Rider 无法检测到缺少的参数:

字符串格式化方法调用错误

让 JetBrains Rider 识别自定义字符串格式化方法

  1. 按照 源代码中的注解 部分中描述的方式引用 JetBrains.Annotations 命名空间。

  2. 使用 [StringFormatMethodAttribute] 属性为自己的字符串格式化方法添加注解,该属性需要一个参数——格式字符串参数的名称:

    [StringFormatMethod("formatString")] public void ShowError(string formatString, params object[] args) { // some custom logic Console.WriteLine(formatString, args); }

    当调用此自定义格式化方法时,JetBrains Rider 将能够提醒您缺少参数。 此外, 添加参数 快速修复 还可以帮助您更轻松地插入这些参数:

    字符串格式化方法调用的快速修复
  3. 或者,您可以为接受格式化字符串的参数添加 [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}"); }

    这种方法允许您在占位符中使用自定义字符串,如上例中的 用户名

在插值字符串中

现代版本的 C# 提供了比 String.Format 方法更优雅的替代方案——插值字符串。 因此,JetBrains Rider 会高亮显示 String.Format 的用法,并建议将其转换为插值字符串。 您可以使用 快速修复 ,将当前用法或特定范围内的所有用法 转换 ,操作只需几次按键。

JetBrains Rider:将 String.Format 的用法转换为字符串插值

如果插值字符串不包含任何表达式,JetBrains Rider 会将 $ 符号高亮为冗余,并帮助您移除它:

JetBrains Rider:将无参数的字符串插值转换为字符串字面量

如果您需要在输入字符串时快速在字符串开头添加 $ ,您可以按 Alt+Enter 并选择 转换为字符串内插

然后,您还可以选择 插入内插实参 ,JetBrains Rider 会在您的光标位置添加参数占位符 { }

JetBrains Rider:将简单字符串转换为字符串插值
最后修改日期: 2025年 9月 26日