我想替换这个字符串:“color”:“efea27”,“color”:“0000ff”, 但“efea27”可能是任何东西(它是随机的)。我想将其更改为用户输入的内容。例如0000ff当我不知道颜色“”之间是什么时我该怎么做?
(我要编辑的这个文件:pastebin.com/JWzJQcVm)
谢谢! -shinevision
答案 0 :(得分:1)
您可以像这样使用Json.NET:
var newColor = "hello";
var jtoken = JObject.Parse("{yourinput}");
var colorProperties = jtoken
.Descendants()
.OfType<JProperty>()
.Where(x => x.Name == "color")
.ToList();
foreach (var prop in colorProperties)
{
prop.Replace(new JProperty("color", newColor));
}
var result = jtoken.ToString(Newtonsoft.Json.Formatting.Indented);
正如其他评论所说,如果需要,您需要添加nuget包:Install-Package Newtonsoft.Json
并添加相关的命名空间:
using Newtonsoft.Json.Linq;
using System.Linq;
此代码将更改所有出现的&#34;颜色&#34;整个输入中的属性,无论它的层次结构如何,这可能是您想要的,也可能不是您想要的。
答案 1 :(得分:0)
根据您想要的模块化,这将很快完成工作。但是,如果您的上下文比原始帖子看起来更复杂,那么它不是很方便:
var yourColor = "\"Color\":\"efea27\"";
var split = yourColor.Split(':');
split[1] = "YourOwnText";
yourColor = String.Join(":", split);
Console.WriteLine(yourColor); // "Color":"YourOwnText"
基本上,在数组中存储键和原始字符串的值,用你的值替换它们,然后用“:”作为分隔符连接它们。
我从不使用Json.Net的这个feature,但它应该完成这项工作。要使用它,您需要安装nuget依赖项:
Install-Package Newtonsoft.Json -Version 9.0.1
如果我有时间,我会尝试用它写一些东西(这里有一些tips)。
答案 2 :(得分:0)
正则表达式替换应该能够做你想做的事情:
using System.Text.RegularExpressions;
//Matches: "color":"######" where #'s can be A-F and 0-9
Regex r = new Regex("\"color\":\"[a-fA-F0-9]{6}\"");
//Example input (will be your JSON)
string json = "some stuff \"color\":\"efea27\" more stuff";
//Color to replace original with
string newColor = "\"color\":\"FF0000\"";
//output is: some stuff "color":"FF0000" more stuff
json = r.Replace(json, newColor);
为了使它更具可重复性,你可以做这样的事情(只需用你的输入替换字符串&#34; 0000FF&#34;)
string replaceFormat = "\"color\":\"{0}\"";
json = r.Replace(json, string.Format(replaceFormat, "0000FF"));
请注意,这将取代所有出现的&#34; color&#34;:&#34; ######&#34;在字符串中。