我正在尝试在包含空格的字符串中添加单个反斜杠。我正在使用String.Format
方法。这是代码。
query = "Field1:Web Services";
var hasSpaces = query.Contains(" ");
if (hasSpaces)
{
var qfix = '\u005c' + " "
var newQueryString = query.Replace(" ", qfix);
}
我希望看到像这样的字符串
如果query = "Field1:Web Services";
然后newQueryString = "Field1:Web\ Services";
但我所看到的是"Field1:Web\\ Services"
因此,对于需要在查询空间之前使用反斜杠的Lucene查询,这不起作用。甚至删除反斜杠使用
var newQueryString2 = newQueryString.Replace("\\", @"\");
无效
暂时不说,我尝试在查询参数周围使用双引号,但是当我这样做时,我得到了反斜杠。所以
var query2 = string.Format("{0}:\"{1}\"", Field1, Field2);
给我
Field1:\"Field2\"
再次使用反斜杠。
我不确定为什么我可以在Linqpad中做这个小小提琴,但在VS .NET 4.5应用程序中我得不到相同的结果。
我搜索了很多方法,包括使用字符串文字,并使用" \\
"但我总是得到第二个反斜杠,无法使用query.Replace方法删除。为什么上面的代码在VS中不起作用,但可以在像Linqpad这样的应用程序中运行?
答案 0 :(得分:0)
您是否尝试用'?'替换空格?如下?
var parsed = query.Replace(" ", "?");
这可能会有所帮助。
答案 1 :(得分:0)
请试试这个: var qfix = @“\”;