Regex.Replace()用于替换整个匹配项

4

我正在使用regex.Replace()函数替换字符串的整个出现,我的代码如下:Regex.Replace(str,@stringToReplace,"**");其中stringToReplace = @"session" + "\b";

如果我像这样给出代码,它就不能正常工作。但是如果我这样写:Regex.Replace(str,@"session\b","**"); 那么它就能正常工作。请问如何解决这个问题?我想传递一个动态设置的值。

谢谢! nimmi


请标记编程语言。 - user319799
3个回答

4

尝试

stringToReplace = @"session" + @"\b";

1
@Nimmi:如果可能的话,您应该选择最有帮助/正确的答案,并选择旁边的复选标记将其标记为“已接受”。此外,点赞好的答案(我刚刚点赞了您的问题,现在您有足够的声望来这样做)。 - Tim Pietzcker

4
@ 在这里表示一个 逐字字符串文字
当你写 "\b" 而没有 @ 时,它表示退格字符,即 ASCII 码为 8 的字符。你想要的是由反斜杠和 b 组成的字符串,在正则表达式中表示单词边界。
为了得到这个结果,你需要将反斜杠转义为文本中的反斜杠: "\\b" 或者将第二个字符串也变成逐字字符串文字:@"\b"。注意,@"session" 中的 @ (没有 \b)实际上没有任何作用,但保留也无妨。
stringToReplace = "session" + @"\b";

0

@"session" + "\b" 和 @"session\b" 不是同一个字符串。在第一种情况下,"\b" 不会将斜杠视为斜杠,而是将其视为转义参数。而在第二种情况下,你会将其视为斜杠。

因此,@"session" + @"\b" 应该带来相同的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接