【问题标题】:Pass null as parameter in Regex.Replace在 Regex.Replace 中将 null 作为参数传递
【发布时间】:2015-07-14 00:32:48
【问题描述】:

我想在邮件合并中替换 sql 数据库中的值。但我似乎在 Visual Studio 中收到一条错误消息。

值不能为空。 参数名称:替换

当我尝试这个时

Regex.Replace(mergeFieldsXML.InnerXml,"«[^»]*" + wordtoReplace + "[^»]*»", SecurityElement.Escape(mailMergeData[wordtoReplace ]),RegexOptions.IgnoreCase);

我想知道是否可以忽略空值并继续替换?

【问题讨论】:

  • edit您的问题并将每个单词“it”替换为您正在谈论的具体内容。
  • 可能是mailMergeData[key] == null ? "" : mailMergeData[key] 或其他方式来识别key 是否存在。
  • 我试过了也许 mailMergeData[key] == null ? "" : mailMergeData[key] 并且其中一个键是空值。无论如何我可以继续使用null。
  • 其中一个键为空?这意味着wordtoReplace 本身可能为空?在这种情况下,我们需要确切地知道mailMergeData 是什么(字典?具有索引属性的自定义类?)。无论如何,这不是你得到的错误的意思,错误意味着 mailMergeData[wordToReplace] 返回 null,所以 sln 对三元运算符的建议应该有效(尽管我个人更喜欢 null 合并运算符,因为它更简洁:mailMergeData[wordtoReplace] ?? string.Empty)

标签: c# regex asp.net-mvc mailmerge


【解决方案1】:

不可以忽略空值并继续。如果您查看documentation for the method,它清楚地表明如果任何输入、模式或替换为空,您将获得ArgumentNullException

您可以在调用方法之前对这些值进行空值检查,也可以使用空值合并运算符 ?? 内联。

【讨论】:

    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多