使用C#作为JSON输出的HTML字符串。
我希望在转换为JSON的同时替换“HTML包装器<和>之间”的每个实例。同时如果它的文本带有“引号”,那么它不应该替换为'引用。例如。 "since the 1500s"
代码 - 正在替换所有“引用”
public string Content
{
get
{
return _content;
}
set
{
if (value != null)
{
this._content = this._content.Replace("\"", "'");
}
}
}
我从我的视图中获取此格式的字符串。
E.g. model.Content = "<p> Lorem Ipsum is simply dummy text of the printing <span id= "#" ids= "#" display= "inline" ></ span > and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever "since the 1500s".<br></p>";
我正在使用JsonConvert.SerializeObject
string output = JsonConvert.SerializeObject(model, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
预期字符串 - HTML标记中的所有双引号应转换为单引号,但文本引号应与使用C#
一样 "content": "<p><b>Lorem Ipsum</b> is simply dummy <i>text </i>of the printing <span id='#' ids='#' display='inline'></span> and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever \"since the 1500s\".</p>",
答案 0 :(得分:1)
我认为您想要替换&#34;的每个实例,即&lt;并且&gt;用&#39;。
所以,你寻找每个&#34;在你的字符串中,向后看一个&lt;,然后向前看一个&gt;。正则表达式看起来像:
(?<=\<[^<>]*)"(?=[^><]*\>)
所以你可以使用
outputString = Regex.Replace(inputString, "(?<=\\<[^<>]*)\"(?=[^><]*\\>)", "'");
然后你想逃避其他&#34;在你的字符串中。为此你可以使用
outputString = outputString.Replace(@"""", @"\""");
OR
outputString = outputString.Replace("\"", "\\\"");
我创建了一个控制台应用程序来测试它,
Console.WriteLine("Enter The String : ");
string input = Console.ReadLine();
string pattern = "(?<=\\<[^<>]*)\"(?=[^><]*\\>)";
string output = Regex.Replace(input, pattern, "'");
output = output.Replace(@"""", @"\""");
Console.WriteLine(output);
Console.ReadKey();
输入字符串是您提供的字符串,然后输出将是
<p> Lorem Ipsum is simply dummy text of the printing <span id= '#' ids= '#' display= 'inline' ></ span > and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever \"since the 1500s\".<br></p>
答案 1 :(得分:0)
最好用(\&#34;)替换所有double(&#34;)。这样您就可以将双引号存储为字符串的一部分。 敌人的例子:
string storeValue = "Subash \"Kharel\"";