我有一个字符串(其值为{"id":"123241077871_4423423423414"}
的示例),我只需要带有数字和下划线的部分。但是,我使用String.Replace
方法执行此操作的方式不起作用。谁能帮我?
这是我尝试过的:
Settings.Default["lastid"].ToString().Replace('{"id":"'+"}',null);
答案 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