【发布时间】:2014-11-23 12:23:36
【问题描述】:
有一个带有非转义双引号的多行字符串会阻止字符串被解析。
字符串示例:
ns:common.topic.description "1942: A Love Story est un film indien r\u00e9alis\u00e9 par Vidhu Vinod Chopra sorti en salles le 15 juillet 1994. Il met en vedette Anil Kapoor, Manisha Koirala et Jackie Shroff. Le long m\u00e9trage est un succ\u00e8s moyen au box-office mais lance la carri\u00e8re de Manisha Koirala."@fr;
ns:common.topic.description "1942: A Love Story to bollywoodzki dramat mi\u0142osny i film akcji zrealizowany w 1993 roku przez Vidhu Vinod Chopra, autora takich film\u00f3w jak Misja w Kaszmirze, czy Eklavya: The Royal Guard. W rolach g\u0142\u00f3wnych Anil Kapoor i Manisha Koirala', w drugoplanowych Jackie Shroff, Anupam Kher, Danny Denzongpa i Pran. Film by\u0142 hitem jako musical. Premiera jego odby\u0142a si\u0119 ju\u017c po \u015bmierci nagrodzonego potem kompozytora weterana Bollywoodu Rahul Dev Burman. To historia mi\u0142osna. Jej t\u0142em jest rok 1942, w kt\u00f3rym Gandhi has\u0142em "Quit India!" wezwa\u0142 Anglik\u00f3w do odej\u015bcia z kraju po 200-letniej okupacji. Syn s\u0142u\u017c\u0105cego Anglikom Indusa zakochuje si\u0119 w c\u00f3rce bojownika o wolno\u015b\u0107 kraju."@pl;
我试过这段代码来替换字符串每一行上第一次和最后一次出现的"(代码不好,不起作用,只是不知道其他方法来做需要的事情):
var freebaseFixedRdfString = Regex.Replace(freebaseFixedRdfString, "\"", delegate(Match match)
{
bool first = match.Index == 1;
bool last = match.NextMatch().Index == 0;
if (first || last)
return "\"\"\"";
else
return match.Value;
}, RegexOptions.Compiled | RegexOptions.Multiline);
如何使用正则表达式将第一个和最后一个"替换为"""?
【问题讨论】:
-
如果您在程序中没有使用正则表达式来处理其他任何事情,那么我会觉得为此目的引入了过于复杂的功能。