Regex可以删除字符串中的多个周围{“TextWithHtml”:和}吗?

时间:2013-06-25 11:56:24

标签: c# regex json string linq

有没有办法可以操作包含以下内容的字符串:

{"Correct":true,"Explanation":{"TextWithHtml":null},"ImageFile":null,"Response":false,"Text":{"TextWithHtml":"1 -1 4 -16"}},{"Correct":true,"Explanation":{"TextWithHtml":null},"ImageFile":null,"Response":false,"Text":{"TextWithHtml":"1 -1 4 2147483644"}}]

并删除{"TextWithHtml":},但保留内容?

3 个答案:

答案 0 :(得分:2)

恕我直言,你应该创建一个类

public class YourClassName
{
    public string TextWithHtml{ get; set; }
}

修改答案课

public class Answer : AuditableTable
{
    public bool Correct { get; set; }
    public bool Response { get; set; }
    public YourClassName Text { get; set; }
    public string ImageFile { get; set; }
    public YourClassName Explanation { get; set; }
}

答案 1 :(得分:0)

试试这个:

string sSource = @"{"Correct":true,"Explanation":{"TextWithHtml":null},"ImageFile":null,"Response":false,"Text":{"TextWithHtml":"1
    -1 4 -16"}},{"Correct":true,"Explanation":{"TextWithHtml":null},"ImageFile":null,"Response":false,"Text":{"TextWithHtml":"1
    -1 4 2147483644"}}]"; 

string pattern = @"({"TextWithHtml":)|(?(?<=({"TextWithHtml":)[^}]*)})"; 

string sResult= Regex.Replace(@sSource, @pattern, "");

一些解释:

删除

{"TextWithHtml":

或删除

}

如果之前是:

{“TextWithHtml”:加上一些不是'{'

的字符

编辑:

表示TextWithHtml字符串中的{}括号:

({ “TextWithHtml” :) |((小于=(({ “TextWithHtml”:?)(( “[^”] *“)|空)))})

但是转义引号字符(\“)仍然存在问题。

答案 2 :(得分:0)

要匹配您想要的所有数据,请使用以下正则表达式:

{"TextWithHtml":.*?}

使用Regex.Replace(...)将匹配项替换为子字符串。

string data = match.Value.Substring(16, match.Value.Length-16-1);

接下来,如果数据包含“marks:

,则修剪数据
data.Trim('"');