【发布时间】: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