【发布时间】: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 出身吗?