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 只搜索一个文本字符串。你不能一次完成这两个。

于 2013-05-19T17:18:58.917 回答
1

如何使用真正的 json 解析器并以正确的方式进行

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

将您的代码更改为:

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

只需一次使用正则表达式

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 回答