0

文字列 (値の例は{"id":"123241077871_4423423423414"}) があり、数字とアンダースコアの部分のみが必要です。ただし、メソッドでそれを行う私のString.Replace方法は機能しません。誰でも私を助けることができますか?

これは私が試したことです:

Settings.Default["lastid"].ToString().Replace('{"id":"'+"}',null);
4

5 に答える 5

1

あなたのコードは

Settings.Default["lastid"].ToString().Replace("{\"id\":\"", "").Replace("\"}","");

Jon Skeet が言ったように、現在、これは有効な文字列リテラルではありません。さらに、Replace は 1 つのテキスト文字列のみを検索します。1 つのパスで両方を実行することはできません。

于 2013-05-19T17:18:58.917 に答える
1

実際のjsonパーサーを使用して正しい方法で実行するのはどうですか

var id = JsonConvert.DeserializeAnonymousType(s, new { id = "" }).id;
于 2013-05-19T17:31:11.630 に答える
0

正規表現を使用した1回のパスで

string test = Settings.Default["lastid"].ToString();
string result = Regex.Replace(test, @"[^0-9_]", @"");
Console.WriteLine(result);

正規表現パターンは次のことを意味します。

  • 括弧内に (^) を含まない任意の文字に一致
  • 空の文字列に置き換えます。

以下のコメントで @newStackExchangeInstance が指摘しているように、パターン[^0-9_]を変更し[^\d_]て、置換から除外したままにすることもできます。Unicode Numerical Characters

于 2013-05-19T17:23:31.493 に答える
0

正規表現を使用してみてください。

string json = @"{""id"":""123241077871_4423423423414""}" //or whatever your value is
Regex.Match(json, @"{""id"":""(\d+_\d+)""}".Groups[1] //will give you your result
于 2013-05-19T17:28:29.723 に答える
0

コードを次のように変更します。

Settings.Default["lastid"].ToString().Replace("{\"id\":","");
Settings.Default["lastid"].ToString().Replace("\"}\"","");
于 2013-05-19T17:18:30.153 に答える