【问题标题】:Change special chars in string更改字符串中的特殊字符
【发布时间】:2021-08-19 19:03:03
【问题描述】:

我正在使用 c#,并且在 appsettings.json 的代码中,如果存在特殊字符,我会获取字符串并转换它们。这是我的代码

int? a = applicationRequestViewModel.GetApplicantIndex();
int? g = applicationRequestViewModel.GetGurantorIndex();

foreach (var keys in _options.Value.RegisterParamKeys)
{
    string value = keys.Split(";")[0];
    string name = keys.Split(";")[1];
    string key = value.Split(":")[typeOfApplicant];
    key = Regex.Replace(key, @"[^\[a\]]", "[" + a + "]");
    key = Regex.Replace(key, @"[^\[g\]]", "[" + g + "]");
    var registrationProperty = new RegistrationProperty() { };
    registrationProperty.Name = name;
    registrationProperty.Value = (string)rss.SelectToken(key);
    listOfRegistrationProperty.Add(registrationProperty);
}

我从 appsettings.json 获取了下面的字符串

"RegisterBatchParams": [
    "applicationInfo.applicationNumber:applicationInfo.applicationNumber:applicationInfo.applicationNumber:applicationInfo.applicationNumber;applicationNumber",
    "applicationInfo.applicantType:applicationInfo.applicantType:applicationInfo.applicantType:applicationInfo.applicantType;applicantType",
    "applicationInfo.customerSegment:applicationInfo.customerSegment:applicationInfo.customerSegment:applicationInfo.customerSegment;customerSegment",
    "applicationInfo.applicationStatusLocalText:applicationInfo.applicationStatusLocalText:applicationInfo.applicationStatusLocalText:applicationInfo.applicationStatusLocalText;applicationStatus",
    "applicationRequestViewModel.applicants[a].businessPartner.person.firstName:applicationRequestViewModel.applicants[a].businessPartner.person.firstName:applicationRequestViewModel.applicants[a].businessPartner.person.firstName:applicationRequestViewModel.applicants[a].businessPartner.person.firstName;customerName"
  ],

对于最后一个字符串,我想将"applicants[a]" 更改为索引号,但它没有按预期转换如何正确转换?

如预期的结果

applicationRequestViewModel.applicants[0].businessPartner.person.firstName

但给定的结果

a[0][0][0][0][0]a[0][0][0][0][0][0][0][0][0]a[0][0][0][0][0]a[0][0][0][0][0][0][0][0][0][0]

【问题讨论】:

  • 您预计会发生什么,实际会发生什么?
  • 您要求它用[0] 替换除字符以外的任何内容 [a]。为什么需要正则表达式?只需将"[a]" 替换为"[" + a + "]"
  • 是否有理由使用正则表达式而不是 string.replace?
  • 但是可以替换多个。所以全部替换还是只替换一个?
  • @pc_coder string.Replace 更改所有出现,而不仅仅是第一个。你是 JS 出身吗?

标签: c# regex


【解决方案1】:

@"\[a\]"代替@"[^\[a\]]"

但是你甚至不需要正则表达式。简单的string.Replace 也能胜任。

【讨论】:

    【解决方案2】:

    或者,您可以试试这个正则表达式,只替换括号内的字符。

    [a](?=[]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-18
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2016-04-22
      相关资源
      最近更新 更多