1

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

{"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":}保留内部内容?

4

3 回答 3

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; }
}
于 2013-06-25T12:52:21.850 回答
0

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

{"TextWithHtml":.*?}

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

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

接下来,如果数据包含 " 标记,则修剪数据:

data.Trim('"');
于 2013-06-25T16:53:58.660 回答
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":)(("[^"]*")|null)))})

不过,转义引号字符 (\") 仍然存在问题。

于 2013-06-25T13:54:32.567 回答