C# 如何替换字符串';s单词的开头和结尾字符
我的数据库中有以下表结构:C# 如何替换字符串';s单词的开头和结尾字符,c#,replace,datatable,C#,Replace,Datatable,我的数据库中有以下表结构: +----+---------------------------------------------------------------------------------+ | ID | Message | +----+----------------------------------------------------
+----+---------------------------------------------------------------------------------+
| ID | Message |
+----+---------------------------------------------------------------------------------+
| 1 | { "Body": "lorrem impsum test for @@xxx@@ via @@yyy@@. IsMasa lora @@zzz@@." } |
+----+---------------------------------------------------------------------------------+
这是我从SP获取数据的方式
SqlParameter[] parameters = new SqlParameter[1];
parameters[0] = DataAccessManager.GetParameter("@ID", DbType.Int32, id);
DataSet dataset = DataAccessManager.ExecuteStoredProcedure("spGetMessageBody", parameters);
if (dataset != null && dataset.Tables[0] != null && dataset.Tables[0].Rows.Count > 0)
{
return dataset.Tables[0].AsEnumerable().Select(row => new MessageTemplate()
{
TemplateID = row.Field<int>("ID"),
NotifyEvent = row.Field<string>("MessageBody")
}).ToList();
}
else
{
return null;
}
我需要获取JSONBody
键值,并用[
和]
替换@
。上述方法应返回此输出
lorrem impsum test for [xxx] via [yyy]. IsMasa lora [zzz].
您可以使用此选项将第一次出现的
@
替换为[
string myText = "lorrem impsum test for @@xxx@@ via @@yyy@@. IsMasa lora @@zzz@@.";
string firstResult = Regex.Replace(myText, "((?:(?!@@).)*)@@((?:(?!@@).)*@@)", "$1[$2");
然后使用字符串替换所有剩余的@
。替换
string finalResult = firstResult.Replace("@@", "]");
正则表达式:
((?:(?!@)。*)-第一个具有非捕获组的组,在第一次出现@之前的任何内容
@@-首次出现@@
((?:(?!@)。*@)-第二个组第二次出现@
@一般是的,但问题是当我使用此值时。替换(“@“,”[”);
,我无法确定如何使用]
。如果@在word中首先我需要替换为[
如果@@在最后一句中需要替换为]
Ahh是的,这一点很好。您需要使用正则表达式,或将它们计算进和计算出,或在最初保存之前更改令牌的格式(这将是最理想的解决方案。)然后你将不得不希望这个世界上没有其他的@
text@TheGeneral先生,你能给我一个示例代码吗?请告诉我,每对中的第一组"@"前面总是有一个空格字符,最后一组"@"前面是空格字符后跟空格字符或“.”字符?如果是这样,您是否可以将所有出现的“@@”替换为“[”,将所有出现的“@@”替换为“]”,并将所有出现的“@.”替换为“].”Sir,当通过[yyy]对[xxx]执行类似于的字符串测试时.
我需要这个输出测试###xxx###via##yyy#.
最合适的方法是什么?那么,在上面的代码中,您是否尝试过用您想要的字符替换所有的
@
字符?是的,这会返回我错误。string firstResult=Regex.Replace(myText),((?:(!!!)[)[(*)[$352])
哦,我明白了。现在,由于要替换的字符不同,您可以直接使用字符串.replace
。例如mytext.replace(“[”,“##”);
string finalResult = firstResult.Replace("@@", "]");