我有一個字符串(它的值的一個例子是{"id":"123241077871_4423423423414"}
),我只需要帶有數字和下劃線的部分。但是,我的方法與String.Replace
方法不起作用。誰能幫我?字符串替換不工作
這是我已經試過:
Settings.Default["lastid"].ToString().Replace('{"id":"'+"}',null);
我有一個字符串(它的值的一個例子是{"id":"123241077871_4423423423414"}
),我只需要帶有數字和下劃線的部分。但是,我的方法與String.Replace
方法不起作用。誰能幫我?字符串替換不工作
這是我已經試過:
Settings.Default["lastid"].ToString().Replace('{"id":"'+"}',null);
你的代碼改成這樣:
Settings.Default["lastid"].ToString().Replace("{\"id\":","");
Settings.Default["lastid"].ToString().Replace("\"}\"","");
您的代碼不會刪除123241077871_4423423423414周圍的開盤和收盤報價。 –
只需在一次通過與正則表達式
string test = Settings.Default["lastid"].ToString();
string result = Regex.Replace(test, @"[^0-9_]", @"");
Console.WriteLine(result);
正則表達式模式是指:
如在下面的評論注意到@newStackExchangeInstance,模式[^0-9_]
可以在[^\d_]
被改變,以保持排除更換還有其他Unicode Numerical Characters
改爲使用'[^ \ d_]'。這更好,因爲這意味着如果他得到一些unicode數字字符,它們仍算作數字並且不會被替換。 –
@newStackExchangeInstance對不起,我不知道這一點。你能指點我一個例子嗎? – Steve
http://stackoverflow.com/questions/6479423/does-d-in-regex-mean-a-digit看看最上面的答案。 (旁註:我知道它說python,但它也適用於C#) –
嘗試使用正則表達式。
string json = @"{""id"":""123241077871_4423423423414""}" //or whatever your value is
Regex.Match(json, @"{""id"":""(\d+_\d+)""}".Groups[1] //will give you your result
如何使用real json parser和做正確的方式
var id = JsonConvert.DeserializeAnonymousType(s, new { id = "" }).id;
嗯,這是無效的C#下手,所以你應該得到一個編譯時錯誤......這不是一個有效的字符串文字。我建議避免直接字符串操作 - 只是將其解析爲JSON並使用解析的值。 –
爲了將來的參考,你的問題應該擴展到某些東西不起作用的方式。錯誤的結果?編譯器錯誤?運行時錯誤?等等。 – Chris