【问题标题】:Replace double quotes with nothing, triple double qoutes with double qotes用空替换双引号,用双引号替换三重双引号
【发布时间】:2018-11-27 10:37:16
【问题描述】:

我想用 string.Empty 代替单双引号,用双引号代替三重双引号,如下所示:

"StackOverflow"    --->    StackOverflow
"""StackOverflow"   --->   "StackOverflow"

我想指出,源文本将只包含双引号或三个双引号,其他情况无关紧要。

更新:

假设我们有这样的输入文本:

"StackOverflow"
"""StackOverflow"""

我需要将其转换为:

StackOverflow
"StackOverflow"

我知道我不能使用纯 C# 代码(没有一些脏代码)来执行此操作,因为我需要检测单双引号的确切位置以及双引号的多次出现位置。我认为只能使用正则表达式来完成,我所有的尝试都失败了:

[\"]{1}

【问题讨论】:

  • 你的代码有什么问题,它在哪里?
  • 抱歉,I would like to 不是问题。你解释了你的要求,现在有什么问题?
  • 是否有任何字符(来自 Unicode 的整个)您可以放心地假设不会出现在您的字符串中?如果是这样,用那个字符替换三元组,去掉所有剩余的引号,用双引号替换那个字符。
  • 按你的逻辑,"""StackOverflow" 不应该变成"StackOverflow 吗?它以单个双引号结尾。看起来您更像是在尝试解析 @"" 样式的转义字符串,您想在其中去除 outer 双引号,然后对该字符串中的任何双引号进行重复删除。
  • 无论具体情况如何,某种形式的正则表达式替换都可能对您有所帮助。使用(例如)"\"{3}" 精确匹配三个引号,使用 "\"(?!\")" 匹配一个引号,仅当它后面没有另一个引号时。

标签: c# regex double-quotes


【解决方案1】:

您可以使用此正则表达式,它匹配任一大小写并将其替换为适当捕获的组文本。匹配这个正则表达式

(")""|"

并将其替换为 \1

Demo

让我知道这是否适合您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多