"color": "efea27"、 "color": "0000ff"、 という文字列を置き換えたいのですが、 "efea27" )。私はそれをユーザーが入力したものに変更したい。例えば0000ffどうすればいいのですか? ""ランダム"テキストを文字列(ワイルドカード)に置き換えます
(その私が編集したいこのファイル:pastebin.com/JWzJQcVm)
ありがとう! -shinevision
"color": "efea27"、 "color": "0000ff"、 という文字列を置き換えたいのですが、 "efea27" )。私はそれをユーザーが入力したものに変更したい。例えば0000ffどうすればいいのですか? ""ランダム"テキストを文字列(ワイルドカード)に置き換えます
(その私が編集したいこのファイル:pastebin.com/JWzJQcVm)
ありがとう! -shinevision
あなたはこのような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;
を
このコードは、その階層に関係なく、入力中の「color」プロパティのすべての出現を変更します。これは、あなたが望むものであってもなくてもかまいません。
あなたは、nugetパッケージをインストールする必要があります: 'Install-Package Newtonsoft.Json -Version 9.0.1' – fharreau
それは働いた! 1つの問題があります。 :/それはすべて1行にありません。それを修正する方法はありますか? – shinevision
jsonをリテラル文字列としてコードに入れたい場合は、複数の行にまたがるようにするには、それを逐語的な文字列としてマークする必要がありますが、@の接頭辞は '@ ' "' '二重引用符(" ")をバックスラッシュ(\")ではなく、引用符で囲む必要があります。 – Stuart
、これはすぐに仕事を行います。
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です)。
それは動作しますが、私はjsonファイルを開き、すべての色を入力に変更したいと思います。それは可能ですか? – shinevision
あなたはJson全体を提供できますか? – fharreau
ここはhttp:// pastebinです。com/JWzJQcVm(jsonファイル内のすべて1行にあります) – shinevision
A正規表現は、あなたがやりたいことができるはず置き換える:
: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);
それはもう少し再利用可能にするために、あなたは、この(ちょうどあなたの入力した文字列「0000FF」を置き換える)のような何かを行うことができます
string replaceFormat = "\"color\":\"{0}\"";
json = r.Replace(json, string.Format(replaceFormat, "0000FF"));
これは、文字列の "color": "######"がすべて置換されることに注意してください。
だから、最初に何があったとしても、 ""と "0000ff"の間にある2番目の値を置き換えたいですか? – Alex
JSONですか?もしそうなら、jsonパーサーを使ってください! – Bas
Alex:はい私自身で「randomText」を変更したい – shinevision