2017-01-02 17 views
-1

"color": "efea27"、 "color": "0000ff"、 という文字列を置き換えたいのですが、 "efea27" )。私はそれをユーザーが入力したものに変更したい。例えば0000ffどうすればいいのですか? ""ランダム"テキストを文字列(ワイルドカード)に置き換えます

(その私が編集したいこのファイル:pastebin.com/JWzJQcVm)

ありがとう! -shinevision

+0

だから、最初に何があったとしても、 ""と "0000ff"の間にある2番目の値を置き換えたいですか? – Alex

+0

JSONですか?もしそうなら、jsonパーサーを使ってください! – Bas

+0

Alex:はい私自身で「randomText」を変更したい – shinevision

答えて

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; 

このコードは、その階層に関係なく、入力中の「color」プロパティのすべての出現を変更します。これは、あなたが望むものであってもなくてもかまいません。

+0

あなたは、nugetパッケージをインストールする必要があります: 'Install-Package Newtonsoft.Json -Version 9.0.1' – fharreau

+0

それは働いた! 1つの問題があります。 :/それはすべて1行にありません。それを修正する方法はありますか? – shinevision

+0

jsonをリテラル文字列としてコードに入れたい場合は、複数の行にまたがるようにするには、それを逐語的な文字列としてマークする必要がありますが、@の接頭辞は '@ ' "' '二重引用符(" ")をバックスラッシュ(\")ではなく、引用符で囲む必要があります。 – Stuart

0

あなたが望むモジュール性に応じて、オプション1

、これはすぐに仕事を行います。

var yourColor = "\"Color\":\"efea27\""; 
var split = yourColor.Split(':'); 
split[1] = "YourOwnText"; 
yourColor = String.Join(":", split); 

Console.WriteLine(yourColor); // "Color":"YourOwnText" 

基本的には、配列に格納し、キーとあなたの元の文字列の値は、あなたによって値を置き換え、それらを結合します。しかし、あなたのコンテキストがあなたよりも複雑である場合、元のポストがどのように見える非常に便利ではありませんセパレータとして ":"を付けてください。

オプション2

私はJson.Netのこのfeatureを使用することはありませんが、それは仕事をする必要があります。これを使用するには、あなたがnuget依存関係をインストールする必要があります。

Install-Package Newtonsoft.Json -Version 9.0.1

私は時間があれば、私はそれで何かを書くしようとします(ここではいくつかのtipsです)。

+0

それは動作しますが、私はjsonファイルを開き、すべての色を入力に変更したいと思います。それは可能ですか? – shinevision

+0

あなたはJson全体を提供できますか? – fharreau

+0

ここはhttp:// pastebinです。com/JWzJQcVm(jsonファイル内のすべて1行にあります) – shinevision

0

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": "######"がすべて置換されることに注意してください。

関連する問題