我有一个字符串(它的值的一个例子是{"id":"123241077871_4423423423414"}
),我只需要带有数字和下划线的部分。但是,我使用该方法的String.Replace
方法不起作用。谁能帮我?
这是我尝试过的:
Settings.Default["lastid"].ToString().Replace('{"id":"'+"}',null);
你的代码应该是
Settings.Default["lastid"].ToString().Replace("{\"id\":\"", "").Replace("\"}","");
正如 Jon Skeet 所说,目前,它不是一个有效的字符串文字。此外,Replace 只搜索一个文本字符串。你不能一次完成这两个。
如何使用真正的 json 解析器并以正确的方式进行
var id = JsonConvert.DeserializeAnonymousType(s, new { id = "" }).id;
将您的代码更改为:
Settings.Default["lastid"].ToString().Replace("{\"id\":","");
Settings.Default["lastid"].ToString().Replace("\"}\"","");
只需一次使用正则表达式
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