原始字符串:
11235485 | 56987 | 0 | 2010 | 05 |"这是我的样本 " text"" |" 01J400B" |"" | 1 |"示例"文字"第二个" |""示例文本编号 3"" |"" |"" |
所需字符串:
11235485 | 56987 | 0 | 2010 | 05 |"这是我的样本 ""文字""" |" 01J400B" |"" | 1 |"样本" "文本""第二个" |"""示例文本 第三,""" |"" |"" |
遗憾的是,所需的字符串是一个不受我控制的要求,所有嵌套的引号必须用引号限定(我知道)。
尝试我可能无法从原始字符串创建所需的字符串。
正则表达式匹配/替换似乎是要走的路,我需要帮助。任何帮助表示赞赏。
答案 0 :(得分:1)
我实际上拆分了字符串并评估每一部分:
public string Escape(string input)
{
string[] pieces = input.Split('|');
for (int i = 0; i < pieces.Length; i++)
{
string piece = pieces[i];
if (piece.StartsWith("\"") && piece.EndsWith("\""))
{
pieces[i] = "\"" + piece.Trim('\"').Replace("\"", "\"\"") + "\"";
}
}
return string.Join("|", pieces);
}
这是对输入的几个假设:
|
)如果您在引用的字符串中有|
,这也会中断。
答案 1 :(得分:1)
您可以使用普通的string.Replace()
方法。您知道|
是启动该列的内容,因此您可以将所有"
替换为""
,然后将|""
替换为{{1}来修复列的开始和结束}和|"
到""|
。
它看起来像这样:
"|
它并不漂亮,但它完成了工作。