向字符串添加单个反斜杠以用于查询Lucene索引

时间:2015-10-27 18:27:14

标签: c# lucene

我正在尝试在包含空格的字符串中添加单个反斜杠。我正在使用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这样的应用程序中运行?

2 个答案:

答案 0 :(得分:0)

您是否尝试用'?'替换空格?如下?

var parsed = query.Replace(" ", "?");

这可能会有所帮助。

答案 1 :(得分:0)

请试试这个: var qfix = @“\”;