文字列 (値の例は{"id":"123241077871_4423423423414"}
) があり、数字とアンダースコアの部分のみが必要です。ただし、メソッドでそれを行う私のString.Replace
方法は機能しません。誰でも私を助けることができますか?
これは私が試したことです:
Settings.Default["lastid"].ToString().Replace('{"id":"'+"}',null);
あなたのコードは
Settings.Default["lastid"].ToString().Replace("{\"id\":\"", "").Replace("\"}","");
Jon Skeet が言ったように、現在、これは有効な文字列リテラルではありません。さらに、Replace は 1 つのテキスト文字列のみを検索します。1 つのパスで両方を実行することはできません。
実際のjsonパーサーを使用して正しい方法で実行するのはどうですか
var id = JsonConvert.DeserializeAnonymousType(s, new { id = "" }).id;
正規表現を使用した1回のパスで
string test = Settings.Default["lastid"].ToString();
string result = Regex.Replace(test, @"[^0-9_]", @"");
Console.WriteLine(result);
正規表現パターンは次のことを意味します。
以下のコメントで @newStackExchangeInstance が指摘しているように、パターン[^0-9_]
を変更し[^\d_]
て、置換から除外したままにすることもできます。Unicode Numerical Characters
正規表現を使用してみてください。
string json = @"{""id"":""123241077871_4423423423414""}" //or whatever your value is
Regex.Match(json, @"{""id"":""(\d+_\d+)""}".Groups[1] //will give you your result
コードを次のように変更します。
Settings.Default["lastid"].ToString().Replace("{\"id\":","");
Settings.Default["lastid"].ToString().Replace("\"}\"","");