代码分析和字符串字面量的辅助功能
在普通字符串中
以下是 JetBrains Rider 在您编码时处理普通字符串时可以帮助您的方式:
默认情况下,JetBrains Rider 会高亮所有非逐字字符串中的正确和错误转义序列:

当您的光标位于字符串中并选择相应的 上下文操作时,您可以通过按 Alt+Enter 将普通字符串和逐字字符串进行转换。 这同样适用于插值字符串。
您可以通过按 输入 简单地 拆分字符串字面量。
如果字符串包含正则表达式,JetBrains Rider 可以高亮显示其语法和错误,并在表达式中帮助您进行代码补全。 欲了解更多信息,请参阅 正则表达式辅助功能。
同样,您可以让 JetBrains Rider 分析字符串字面量中的 HTML。 为了让 JetBrains Rider 识别字符串字面量中的特定语言,您可以使用相应的 上下文操作 或在字符串字面量之前添加
/*language=regexp|jsregexp|html*/注释。您可以选择字符串中的某个子字符串,并自动 为该子字符串引入一个变量。
如果您的项目支持本地化,您可以自动 将字符串移至资源文件。
在系统字符串格式化方法中
JetBrains Rider 会分析所有 .NET 字符串格式化方法的格式字符串和参数,例如 String.Format、 Text.StringBuilder.AppendFormat 或 Console.WriteLine。
在字符串格式化方法的使用中,JetBrains Rider 会高亮显示格式占位符,还会在您的光标位于占位符或对应参数上时同步高亮显示二者:

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

您可以通过在警告上按 Alt+Enter 来轻松修复此问题。 JetBrains Rider 将建议自动添加缺失的参数,或删除不匹配的格式占位符。
JetBrains Rider 还会帮助您检测并移除在其他字符串格式化方法内部的冗余字符串格式化方法调用。 例如:

要快速将字符串字面量和变量的连接转换,您可以在连接中按任意位置的 Alt+Enter 并使用 到 String.Format 调用 上下文操作。 例如,如果我们在以下方法的 返回 语句中应用此上下文操作:
它将被转换为:
您还可以使用上下文操作在字符串中自动添加或移除格式占位符和参数。 当您在字符串字面量中调用 插入格式实参 操作时,JetBrains Rider 会插入一个具有正确索引的新占位符,并将您定位到可立即开始键入参数的位置。 此操作也可以在普通字符串上调用。 在这种情况下,JetBrains Rider 会自动将其转换为 String.Format 调用。
要快速删除格式占位符及其对应的参数,请将插入符放置在该占位符处,按下 Alt+Enter 并选择 移除格式实参。
在自定义字符串格式化方法中
要在自定义字符串格式化方法中启用代码分析和辅助功能,请使用 [StringFormatMethod] 和 [StructuredMessageTemplate] 属性,这些属性来自 JetBrains.Annotations 命名空间。
以下是一个自定义字符串格式化方法 ShowError 示例:
如果方法调用错误,如下所示,则 JetBrains Rider 无法检测到缺少的参数:

让 JetBrains Rider 识别自定义字符串格式化方法
按照 源代码中的注解 部分中描述的方式引用
JetBrains.Annotations命名空间。使用
[StringFormatMethodAttribute]属性为自己的字符串格式化方法添加注解,该属性需要一个参数——格式字符串参数的名称:[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}"); }这种方法允许您在占位符中使用自定义字符串,如上例中的
用户名。
在插值字符串中
现代版本的 C# 提供了比 String.Format 方法更优雅的替代方案——插值字符串。 因此,JetBrains Rider 会高亮显示 String.Format 的用法,并建议将其转换为插值字符串。 您可以使用 快速修复 ,将当前用法或特定范围内的所有用法 转换 ,操作只需几次按键。

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

如果您需要在输入字符串时快速在字符串开头添加 $ ,您可以按 Alt+Enter 并选择 转换为字符串内插。
然后,您还可以选择 插入内插实参 ,JetBrains Rider 会在您的光标位置添加参数占位符 { }。
