gpt4 book ai didi

c# - 删除引号内的空格,忽略转义引号

转载 作者:行者123 更新时间:2023-12-05 03:12:11 24 4
gpt4 key购买 nike

我有一个 JSON 字符串,我想在其中删除所有不在引号内的空格。我在网上搜索了一下,已经找到了解决方案,如下:

aidstring = Regex.Replace(aidstring, "\\s+(?=([^\"]*\"[^\"]*\")*[^\"]*$)", "");

但是,我现在正在处理一个包含转义引号的字符串:

"boolean": "k near/3 \"funds private\""

而上面的正则表达式解决方案将其变成:

"boolean":"k near/3 \"fundsprivate\""

因为转义引号被视为普通引号。

谁能发布忽略转义引号的正则表达式?

最佳答案

我建议使用

aidstring = Regex.Replace(aidstring, @"(""[^""\\]*(?:\\.[^""\\]*)*"")|\s+", "$1");

参见 regex demo

正则表达式会将所有 C 引号字符串匹配到捕获组 1 中,使用 $1 这些字符串将在结果中恢复,但是使用 \s+ 捕获的所有空格将被已删除。

正则表达式解释:

备选方案 1:

  • ("[^"\\]*(?:\\.[^"\\]*)*"):
    • " - 文字 "
    • [^"\\]* - 除了 \"
    • 之外的零个或多个字符
    • (?:\\.[^"\\]*)* - 零个或多个序列......
      • \\. - \ 和除换行符以外的任何字符
      • [^"\\]* - 除了 \"
      • 之外的零个或多个字符
    • " - 文字 "

备选方案 2:

  • \s+ - 1 个或多个空格(在 .NET 中,任何 Unicode 空格)

关于c# - 删除引号内的空格,忽略转义引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com