在字符串中相互替换两个字符,而不使用占位符字符

Fre*_*dou 1 .net regex linq

我有这个字符串

aa b qqidjwljd p fjem

我需要更换bppb

a a p qqidjwljd b fjem

我这样做的方式看起来像这样

myvar.replace("b","1").replace("p","b").replace("1","p")
Run Code Online (Sandbox Code Playgroud)

这有点难看

有没有更好的办法?

编辑

为什么难看?因为我必须决定/找到适用于任何可能情况的任意字符集

Nes*_*tor 7

string sold = "aa**b**qqidjwljd**p**fjem";
string snew = Regex.Replace(sold, "(?<replace>b|p)", delegate(Match p)
{
    switch (p.Groups["replace"].Value)
    {
        case "b": return "p";
        case "p": return "b";
    };
    throw new ApplicationException("Should never happen!");
});
Run Code Online (Sandbox Code Playgroud)