Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何替换字符串';s单词的开头和结尾字符_C#_Replace_Datatable - Fatal编程技术网

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;
}
我需要获取JSON
Body
键值,并用
[
]
替换
@
。上述方法应返回此输出

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("@@", "]");