【问题标题】:Problems With Escaping Black Slash In Double Quotes In A String在字符串中的双引号中转义反斜杠的问题
【发布时间】:2021-10-14 21:00:42
【问题描述】:

不知道到底发生了什么。

在输出时,我的字符串按应有的方式显示,每个值都用逗号括在双引号中。

但是当我传递我的字符串来查询我的 Firestore 数据库时,它会显示反斜杠。

我已经通过手动添加值来确保查询确实有效,并且一切正常。

我不确定它是否只是不喜欢我传递值的方式,真的是在努力!

var join = string.Join(", ", expo.SelectedItems.OfType<string>().Select(x => "'" + x.ToString() + "'").ToArray());

        String withDoubleQuotes = join.Replace("'", "\"");
        var tokens = withDoubleQuotes;

编辑

我有一个显示令牌列表的列表框。 我想为我的列表框中的每个选定项目更新我的 Firestore 中的每个文档。

因此,使用 FireBase 中的此查询,它将更新字段 Country 中包含值“USA”或“Japan”的每个文档。

Query query = citiesRef.WhereIn("Country", new[] { "USA", "Japan" });

我希望能够做同样的事情,但要获取所选择的值。

我的查询

var join = string.Join(", ", listBox.SelectedItems.OfType<string>().Select(x => "'" + x.ToString() + "'").ToArray());

            String withDoubleQuotes = join.Replace("'", "\"");

            var tokens = withDoubleQuotes;

Query query = database.Collection("users").WhereIn("tokens", new[] { tokens } );

当我这样做时它不起作用。

【问题讨论】:

  • 您正在查看调试器 - 这是为您转义双引号。反斜杠实际上并不存在于字符串中。将字符串打印到控制台,您会看到。 (您的期望是什么,或者 Firestore 是如何参与其中的并不是很清楚。minimal reproducible example 真的很有帮助。)
  • 请看编辑
  • 问题很明确。我认为它没有删除反斜杠。我确实按照我所说的打印了字符串,并且显示效果很好。这让我很困惑,因为它显示在带有反斜杠的调试器中。
  • 你想用 new[]{tokens} 实现什么?你想拥有一个带有字符串属性的对象数组还是只有一个带有一个字符串的对象?
  • 我在问为什么我在转义后仍然看到反斜杠,在调试器中看到它们让我失望。无论如何,现在一切正常。

标签: c# google-cloud-firestore expo


【解决方案1】:

您应该清理文本并删除不需要的随机重音字符,例如引号。使用调试器会转义字符并可能导致数据失真,为此我发现控制台日志记录按事件顺序更准确。

Firestore 还在控制台中围绕字符串文本值显示引号,但这些引号并未附加到值本身,只是进行了外观更改,表示它是字符串而不是其他数据类型,例如对象映射或数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 2011-11-14
    • 2012-12-24
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    相关资源
    最近更新 更多