Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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# 为什么这个regexreplace语句没有做任何事情?_C#_Regex_String_Replace - Fatal编程技术网

C# 为什么这个regexreplace语句没有做任何事情?

C# 为什么这个regexreplace语句没有做任何事情?,c#,regex,string,replace,C#,Regex,String,Replace,下面是一个基本上用字符串中的“.png”替换单词“Stack”的小方法。因此,名为“Grid01Stack”的内容将返回为“Grid01.png”,但是该操作根本不做任何操作,字符串保持不变。出什么事了?代码如下: private string GetUriFromName(string GridName) { string result = Regex.Replace(GridName, @"\bStack\b", ".png");

下面是一个基本上用字符串中的“.png”替换单词“Stack”的小方法。因此,名为“Grid01Stack”的内容将返回为“Grid01.png”,但是该操作根本不做任何操作,字符串保持不变。出什么事了?代码如下:

private string GetUriFromName(string GridName)
    {            
        string result = Regex.Replace(GridName, @"\bStack\b", ".png");
        return (@"Resources/Images/"+result);
    }

\bStack**\b**-正在查找单词前后带有空格、制表符、换行符等的整个单词“Stack”


您只需要字符串。根据Yuri和Cid的建议,为您的案例替换

虽然您可以简单地执行此操作:

GridName.Replace("Stack",".png")
如果单词“Stack”在字符串中出现多次,这不是最佳选项,因为它将替换所有实例。因此,例如,
“Stack01Stack”
将变成
“.png01.png”
。当您试图形成一个好的文件名时,您实际上只想将最后出现的“Stack”替换为“.png”,并且仅当它位于字符串末尾时。因此,如果堆栈多次出现,使用“Stack\b”作为建议的注释也可能会与有效的文件名发生冲突。例如,使用Regex
“GridStack-01Stack”
将变成
“Grid.png-01.png”

这都是基于对这些字符串可能是什么的推测,因此可能没有必要使用此解决方案,但我建议使用以下正则表达式,它仅在出现在字符串末尾时才会更改单词堆栈:

string result = Regex.Replace(GridName, "Stack$", ".png");

•字符串替换:
String x=“Grid01Stack.replace”(“Stack”、“.png”)

•正则表达式:
string x=Regex.Replace(“Grid01Stack”,“[Ss]tack$”,“.png”)

正则表达式将搜索始终位于字符串末尾的
堆栈
堆栈

第一个单词边界
\b
1S
之间不匹配
1
S
之间没有单词边界
1和
S
都是单词字符。
\b堆栈\b
->
Stack\b
不需要正则表达式
GridName.Replace(“Stack”、“.png”)
足够,如果不打算匹配整个单词,请不要使用单词边界。只需使用
stringresult=GridName.Replace(@“Stack”,“.png”)在这种情况下。如果您计划在末尾匹配它,那么可以使用
堆栈$”
regex。