字符串替换不起作用

时间:2013-05-19 17:15:04

标签: c# json string parsing replace

我有一个字符串(其值为{"id":"123241077871_4423423423414"}的示例),我只需要带有数字和下划线的部分。但是,我使用String.Replace方法执行此操作的方式不起作用。谁能帮我?

这是我尝试过的:

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

5 个答案:

答案 0 :(得分:1)

您的代码应为

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

正如Jon Skeet所说,目前,它不是一个有效的字符串文字。此外,“替换”仅搜索一个文本字符串。你无法一次性完成这两项工作。

答案 1 :(得分:1)

如何使用real json parser并以正确的方式执行

var id = JsonConvert.DeserializeAnonymousType(s, new { id = "" }).id;

答案 2 :(得分:0)

将您的代码更改为:

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

答案 3 :(得分:0)

只需一次使用正则表达式

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

正则表达式模式意味着:

  • 匹配括号内未包含的任何字符(^)
  • 并将其替换为空字符串。

正如@newStackExchangeInstance在下面的评论中所指出的那样,[^0-9_]中的模式[^\d_]可以在Unicode Numerical Characters中进行更改,以便排除替换{{1}}

答案 4 :(得分:0)

尝试使用Regex。

string json = @"{""id"":""123241077871_4423423423414""}" //or whatever your value is
Regex.Match(json, @"{""id"":""(\d+_\d+)""}".Groups[1] //will give you your result