以下控制台应用程序正常运行:
class Program
{
static void Main(string[] args)
{
string plainx = "‘test data’ random suffix";
plainx = Regex.Replace(plainx, @"‘", string.Empty);
Console.WriteLine(plainx);
}
}
然而它在ASP.Net应用程序中给我带来麻烦..我附加了VS Debug监视窗口和立即窗口的屏幕截图
正如您所看到的,Regex.Replace
中的Immediate Window
有效 - 但不知道它在代码中是不起作用的(第71行)。我还使用String.Replace
但没有成功。
修改 似乎存储在数据库中的值与编辑器显示的值相似......有点奇怪..
答案 0 :(得分:4)
您是否真的检查过要比较的文字?它包含哪些Unicode代码点?
您的代码显示您尝试替换字形'‘'
,这是一个左侧的“智能引号”。角色的名称是LEFT SINGLE QUOTATION MARK,其代码点是0x2018(又名'\u2018'
)。这是您通常无法在键盘上输入的字符。
你可能看到的是字形'`'
,一个“反引号”。它的字符名称为GRAVE ACCENT,其代码点为0x0060(又名'\u0060'
)。这是当您按下标准美国键盘上的[未移位]波形键(数字行上最左侧的键)时键入的字符。
当然,它可能是许多其他字符中的任何一个,其字形类似于单引号。有关详细信息,请参阅Commonly Confused Characters。
答案 1 :(得分:2)
您的代码中的单引号与您正在测试的字符串中的单引号不同。
直接使用testx[0]
返回的十六进制值来保证我们使用正确的引号。
plainx = Regex.Replace(plainx, "\u2018", string.Empty);
答案 2 :(得分:0)
尝试替换:
@"‘" to @"\‘"
代码:
string plainx = "‘test data’ random suffix";
plainx = System.Text.RegularExpressions.Regex.Replace(plainx, @"\‘", string.Empty);
Console.WriteLine(plainx);
Console.Read();