Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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#如果发现完全匹配,则替换字符串_C#_String - Fatal编程技术网

C#如果发现完全匹配,则替换字符串

C#如果发现完全匹配,则替换字符串,c#,string,C#,String,仅当字符串完全匹配时,我才需要替换。我该怎么做 此时,如果字符串表达式与字符串的任何部分匹配,它将替换该字符串表达式 string strExpression = "hey! Hello World. SpecialDayForMe"; strExpression = strExpression .Replace("SpecialDay", "ABC") ; strExpression的结果是“嘿!你好,World.ABCForMe” 仅当字符串中存在SpecialDay匹配项时,我希望它

仅当
字符串
完全匹配时,我才需要替换。我该怎么做

此时,如果字符串表达式与字符串的任何部分匹配,它将替换该字符串表达式

string strExpression  = "hey! Hello World. SpecialDayForMe";

strExpression = strExpression .Replace("SpecialDay", "ABC") ;
strExpression
的结果是
“嘿!你好,World.ABCForMe”

仅当字符串中存在
SpecialDay
匹配项时,我希望它匹配的内容,而不是部分匹配项。我该怎么做

注意:如果不使用正则表达式就可以这样做,那就太好了。

替换整个单词时,请尝试使用正则表达式(
\b
标记单词的边框):


“你好,世界。SpecialDay为我”以及“SpecialDay,”和“SpecialDay”。

什么是精确匹配?是
Specialday;forMe
确切日期或
特殊日期。forMe
?请明确您的问题-谈论“精确匹配”听起来像是在区分不同情况下的匹配,等等。“嘿!你好,世界。SpecialDayForMe”确实包含“SpecialDay”。我相信你真的很感兴趣,它是否与一个完整的单词相匹配。为此,您需要提出详细的需求。您希望连字符和其他标点符号的行为如何?您是否有一个允许在您尝试匹配的令牌之前/之后使用的字符的精确列表?此列表的可能副本可能会有所帮助您是否有任何特殊原因希望在没有正则表达式的情况下执行此操作?我不认为还有其他方法不需要你自己做一些解析,基本上是为了这个目的构建你自己的小正则表达式引擎。OP特别要求不要正则表达式,
\b
也匹配“SpecialDay forMe”,在瑞典语中,在这种情况下“-”不会算作单词边界,因此,它可能必须本地化。
 using System.Text.RegularExpressions;

 ...

 string strExpression  = "hey! Hello World. SpecialDayForMe";
 string toFind = "SpecialDay";

 strExpression = Regex.Replace(
   strExpression, 
  @"\b" + Regex.Escape(toFind) + @"\b", // Regex.Escape to be on the safe side
   "ABC");